]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Add index_mail_global_cache_fields_dup() to hide global_cache_fields
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Fri, 2 Dec 2022 13:52:26 +0000 (15:52 +0200)
committerTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 12 Dec 2022 09:49:39 +0000 (11:49 +0200)
src/lib-storage/index/index-mail.c
src/lib-storage/index/index-mail.h
src/lib-storage/index/index-storage.c

index b7212860a26a632a94d4e1c9dd2b6324932cc9a7..49c73acf6b96645b3a812bd557e05052daec30de 100644 (file)
@@ -26,7 +26,7 @@
 #define BODY_SNIPPET_ALGO_V1 "1"
 #define BODY_SNIPPET_MAX_CHARS 200
 
-struct mail_cache_field global_cache_fields[MAIL_INDEX_CACHE_FIELD_COUNT] = {
+static struct mail_cache_field global_cache_fields[MAIL_INDEX_CACHE_FIELD_COUNT] = {
        { .name = "flags",
          .type = MAIL_CACHE_FIELD_BITMASK,
          .field_size = sizeof(uint32_t) },
@@ -74,6 +74,11 @@ static int index_mail_parse_body(struct index_mail *mail,
                                 enum index_cache_field field);
 static int index_mail_write_body_snippet(struct index_mail *mail);
 
+struct mail_cache_field *index_mail_global_cache_fields_dup(void)
+{
+       return i_memdup(global_cache_fields, sizeof(global_cache_fields));
+}
+
 int index_mail_cache_lookup_field(struct index_mail *mail, buffer_t *buf,
                                  unsigned int field_idx)
 {
index f454ad30fabc557277c95f1df1783a2d7debf39d..db2f44d21e7d3f51d160eb69fa61f967f98e21eb 100644 (file)
@@ -27,8 +27,6 @@ enum index_cache_field {
 
        MAIL_INDEX_CACHE_FIELD_COUNT
 };
-extern struct mail_cache_field
-       global_cache_fields[MAIL_INDEX_CACHE_FIELD_COUNT];
 
 #define IMAP_BODY_PLAIN_7BIT_ASCII \
        "\"text\" \"plain\" (\"charset\" \"us-ascii\") NIL NIL \"7bit\""
@@ -164,6 +162,8 @@ struct index_mail {
 
 #define INDEX_MAIL(s)  container_of(s, struct index_mail, mail.mail)
 
+struct mail_cache_field *index_mail_global_cache_fields_dup(void);
+
 struct mail *
 index_mail_alloc(struct mailbox_transaction_context *t,
                 enum mail_fetch_field wanted_fields,
index 8e4d0d66ba1721ce66b1e6bf2e6c03e1a26ab84e..20cae26954cfc6526ea2ec1d2314246430e1c6fc 100644 (file)
@@ -83,9 +83,7 @@ static void index_cache_register_defaults(struct mailbox *box)
        const struct mail_storage_settings *set = box->storage->set;
        struct mail_cache *cache = box->cache;
 
-       ibox->cache_fields = i_malloc(sizeof(global_cache_fields));
-       memcpy(ibox->cache_fields, global_cache_fields,
-              sizeof(global_cache_fields));
+       ibox->cache_fields = index_mail_global_cache_fields_dup();
        mail_cache_register_fields(cache, ibox->cache_fields,
                                   MAIL_INDEX_CACHE_FIELD_COUNT);