From: Timo Sirainen Date: Sat, 12 Mar 2011 15:18:47 +0000 (+0200) Subject: maildir, sdbox: If committed transaction has only aborted msg saves, don't assert... X-Git-Tag: 2.0.12~65 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c7a50b2c29780eaa3668bbac738e3fa3e4e171e8;p=thirdparty%2Fdovecot%2Fcore.git maildir, sdbox: If committed transaction has only aborted msg saves, don't assert-crash. --- diff --git a/src/lib-storage/index/dbox-single/sdbox-save.c b/src/lib-storage/index/dbox-single/sdbox-save.c index e4b8432ba3..d622286c74 100644 --- a/src/lib-storage/index/dbox-single/sdbox-save.c +++ b/src/lib-storage/index/dbox-single/sdbox-save.c @@ -265,8 +265,12 @@ int sdbox_transaction_save_commit_pre(struct mail_save_context *_ctx) i_assert(ctx->ctx.finished); - if (array_count(&ctx->files) == 0) + if (array_count(&ctx->files) == 0) { + /* the mail must be freed in the commit_pre() */ + if (ctx->ctx.mail != NULL) + mail_free(&ctx->ctx.mail); return 0; + } if (sdbox_sync_begin(ctx->mbox, SDBOX_SYNC_FLAG_FORCE | SDBOX_SYNC_FLAG_FSYNC, &ctx->sync_ctx) < 0) { diff --git a/src/lib-storage/index/maildir/maildir-save.c b/src/lib-storage/index/maildir/maildir-save.c index 4cefd6b3b9..43befe0124 100644 --- a/src/lib-storage/index/maildir/maildir-save.c +++ b/src/lib-storage/index/maildir/maildir-save.c @@ -927,8 +927,12 @@ int maildir_transaction_save_commit_pre(struct mail_save_context *_ctx) i_assert(_ctx->output == NULL); i_assert(ctx->last_save_finished); - if (ctx->files_count == 0) + if (ctx->files_count == 0) { + /* the mail must be freed in the commit_pre() */ + if (ctx->mail != NULL) + mail_free(&ctx->mail); return 0; + } sync_flags = MAILDIR_UIDLIST_SYNC_PARTIAL | MAILDIR_UIDLIST_SYNC_NOREFRESH;