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);