From 8b7438a3f9668540356998f676b7b2c67bfd67d4 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Tue, 21 Sep 2021 16:37:13 +0300 Subject: [PATCH] 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. --- src/lib-storage/list/mailbox-list-index-sync.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 -- 2.47.3