From: Timo Sirainen Date: Tue, 21 Sep 2021 13:37:13 +0000 (+0300) Subject: lib-storage: Don't use data stack for mailbox list index header update X-Git-Tag: 2.3.17~87 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=8b7438a3f9668540356998f676b7b2c67bfd67d4;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Don't use data stack for mailbox list index header update There can be a lot of mailboxes, causing excessive data stack usage. --- diff --git a/src/lib-storage/list/mailbox-list-index-sync.c b/src/lib-storage/list/mailbox-list-index-sync.c index 240aeb9434..2994bb8173 100644 --- a/src/lib-storage/list/mailbox-list-index-sync.c +++ b/src/lib-storage/list/mailbox-list-index-sync.c @@ -157,11 +157,11 @@ mailbox_list_index_sync_names(struct mailbox_list_index_sync_context *ctx) uint32_t id, prev_id = 0; /* get all existing name IDs sorted */ - t_array_init(&existing_name_ids, 64); + i_array_init(&existing_name_ids, 64); get_existing_name_ids(&existing_name_ids, ilist->mailbox_tree); array_sort(&existing_name_ids, uint32_cmp); - hdr_buf = t_buffer_create(1024); + hdr_buf = buffer_create_dynamic(default_pool, 1024); buffer_append_zero(hdr_buf, sizeof(struct mailbox_list_index_header)); /* add existing names to header (with deduplication) */ @@ -188,6 +188,8 @@ mailbox_list_index_sync_names(struct mailbox_list_index_sync_context *ctx) } mail_index_update_header_ext(ctx->trans, ilist->ext_id, 0, hdr_buf->data, hdr_buf->used); + buffer_free(&hdr_buf); + array_free(&existing_name_ids); } static void