From: Timo Sirainen Date: Tue, 27 Dec 2022 10:08:43 +0000 (-0500) Subject: sdbox: saving - Add data stack frame when assigning UIDs for mails X-Git-Tag: 2.4.0~3214 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e3cd792d6161cdc432a815b603cceecb79855cdf;p=thirdparty%2Fdovecot%2Fcore.git sdbox: saving - Add data stack frame when assigning UIDs for mails Since each saved mail was already using memory, this wasn't causing much extra memory usage. --- diff --git a/src/lib-storage/index/dbox-single/sdbox-save.c b/src/lib-storage/index/dbox-single/sdbox-save.c index 30d88bc69c..e7a6034b8d 100644 --- a/src/lib-storage/index/dbox-single/sdbox-save.c +++ b/src/lib-storage/index/dbox-single/sdbox-save.c @@ -238,22 +238,24 @@ static int dbox_save_assign_uids(struct sdbox_save_context *ctx, struct seq_range_iter iter; unsigned int i, count, n = 0; uint32_t uid; - bool ret; + int ret = 0; seq_range_array_iter_init(&iter, uids); files = array_get(&ctx->files, &count); - for (i = 0; i < count; i++) { + for (i = 0; i < count && ret == 0; i++) T_BEGIN { struct sdbox_file *sfile = (struct sdbox_file *)files[i]; - ret = seq_range_array_iter_nth(&iter, n++, &uid); - i_assert(ret); - if (sdbox_file_assign_uid(sfile, uid) < 0) - return -1; - if (ctx->ctx.highest_pop3_uidl_seq == i+1) { + bool more = seq_range_array_iter_nth(&iter, n++, &uid); + i_assert(more); + ret = sdbox_file_assign_uid(sfile, uid); + if (ret == 0 && ctx->ctx.highest_pop3_uidl_seq == i+1) { index_pop3_uidl_set_max_uid(&ctx->mbox->box, ctx->ctx.trans, uid); } - } + } T_END; + if (ret < 0) + return -1; + i_assert(!seq_range_array_iter_nth(&iter, n, &uid)); return 0; }