Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6392:799b6c593cad HEAD
Don't access freed memory. Caused crashes sometimes.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sat, 15 Sep 2007 15:54:11 +0300 |
parents | c5cff3c6828a |
children | 777fede4d899 |
files | src/lib-storage/index/maildir/maildir-save.c |
diffstat | 1 files changed, 4 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/maildir/maildir-save.c Sat Sep 15 15:29:16 2007 +0300 +++ b/src/lib-storage/index/maildir/maildir-save.c Sat Sep 15 15:54:11 2007 +0300 @@ -670,6 +670,9 @@ ret = -1; } + *t->ictx.saved_uid_validity = + maildir_uidlist_get_uid_validity(ctx->mbox->uidlist); + if (sync_commit) { /* It doesn't matter if index syncing fails */ (void)maildir_sync_index_finish(&ctx->sync_ctx, @@ -698,15 +701,11 @@ void maildir_transaction_save_commit_post(struct maildir_save_context *ctx) { - struct maildir_transaction_context *t = - (struct maildir_transaction_context *)ctx->ctx.transaction; + ctx->ctx.transaction = NULL; /* transaction is already freed */ if (ctx->locked) maildir_uidlist_unlock(ctx->mbox->uidlist); - *t->ictx.saved_uid_validity = - maildir_uidlist_get_uid_validity(ctx->mbox->uidlist); - if (ctx->mail != NULL) mail_free(&ctx->mail); pool_unref(ctx->pool);