# HG changeset patch # User Timo Sirainen # Date 1189860851 -10800 # Node ID 799b6c593cad91ff724a7b80551ca900cd944190 # Parent c5cff3c6828a30381d7e94d1ec17940f0b085d74 Don't access freed memory. Caused crashes sometimes. diff -r c5cff3c6828a -r 799b6c593cad src/lib-storage/index/maildir/maildir-save.c --- 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);