From: Timo Sirainen Date: Fri, 2 Dec 2022 13:52:26 +0000 (+0200) Subject: lib-storage: Add index_mail_global_cache_fields_dup() to hide global_cache_fields X-Git-Tag: 2.4.0~3295 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c2ba05135a97538c5d34e8ea026e8b591effaa45;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Add index_mail_global_cache_fields_dup() to hide global_cache_fields --- diff --git a/src/lib-storage/index/index-mail.c b/src/lib-storage/index/index-mail.c index b7212860a2..49c73acf6b 100644 --- a/src/lib-storage/index/index-mail.c +++ b/src/lib-storage/index/index-mail.c @@ -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) { diff --git a/src/lib-storage/index/index-mail.h b/src/lib-storage/index/index-mail.h index f454ad30fa..db2f44d21e 100644 --- a/src/lib-storage/index/index-mail.h +++ b/src/lib-storage/index/index-mail.h @@ -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, diff --git a/src/lib-storage/index/index-storage.c b/src/lib-storage/index/index-storage.c index 8e4d0d66ba..20cae26954 100644 --- a/src/lib-storage/index/index-storage.c +++ b/src/lib-storage/index/index-storage.c @@ -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);