From: Timo Sirainen Date: Sat, 10 Jul 2004 11:15:42 +0000 (+0300) Subject: fetch_mail needs to be deinitialized before transaction is X-Git-Tag: 1.1.alpha1~3792 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dbfabccd2a9f22887c250dc7e16bff1ba1fd8b36;p=thirdparty%2Fdovecot%2Fcore.git fetch_mail needs to be deinitialized before transaction is committed or rollbacked --HG-- branch : HEAD --- diff --git a/src/lib-storage/index/index-transaction.c b/src/lib-storage/index/index-transaction.c index a076d19421..9678f94baa 100644 --- a/src/lib-storage/index/index-transaction.c +++ b/src/lib-storage/index/index-transaction.c @@ -19,9 +19,6 @@ static void index_transaction_free(struct index_transaction_context *t) mail_cache_view_close(t->cache_view); mail_index_view_close(t->trans_view); mail_index_view_unlock(t->ibox->view); - - if (t->fetch_mail.pool != NULL) - index_mail_deinit(&t->fetch_mail); i_free(t); } @@ -33,6 +30,9 @@ int index_transaction_commit(struct mailbox_transaction_context *_t) uoff_t offset; int ret; + if (t->fetch_mail.pool != NULL) + index_mail_deinit(&t->fetch_mail); + ret = mail_index_transaction_commit(t->trans, &seq, &offset); if (ret < 0) mail_storage_set_index_error(t->ibox); @@ -51,6 +51,9 @@ void index_transaction_rollback(struct mailbox_transaction_context *_t) struct index_transaction_context *t = (struct index_transaction_context *)_t; + if (t->fetch_mail.pool != NULL) + index_mail_deinit(&t->fetch_mail); + mail_index_transaction_rollback(t->trans); index_transaction_free(t); }