changeset 5573:9805becea644 HEAD

Fixed mailbox_transaction_commit_get_uids() to actually work and not just crash.
author Timo Sirainen <tss@iki.fi>
date Tue, 17 Apr 2007 20:17:52 +0300
parents 896845fbc4ed
children 0bc6ec4cddab
files src/lib-storage/index/cydir/cydir-save.c src/lib-storage/index/dbox/dbox-save.c src/lib-storage/index/index-storage.h src/lib-storage/index/index-transaction.c src/lib-storage/index/maildir/maildir-save.c src/lib-storage/index/mbox/mbox-save.c
diffstat 6 files changed, 15 insertions(+), 17 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/cydir/cydir-save.c	Tue Apr 17 19:40:55 2007 +0300
+++ b/src/lib-storage/index/cydir/cydir-save.c	Tue Apr 17 20:17:52 2007 +0300
@@ -186,8 +186,8 @@
 	uid = hdr->next_uid;
 	mail_index_append_assign_uids(ctx->trans, uid, &next_uid);
 
-	t->ictx.first_saved_uid = uid;
-	t->ictx.last_saved_uid = next_uid - 1;
+	*t->ictx.first_saved_uid = uid;
+	*t->ictx.last_saved_uid = next_uid - 1;
 
 	dir = mailbox_list_get_path(ctx->mbox->storage->storage.list,
 				    ctx->mbox->ibox.box.name,
--- a/src/lib-storage/index/dbox/dbox-save.c	Tue Apr 17 19:40:55 2007 +0300
+++ b/src/lib-storage/index/dbox/dbox-save.c	Tue Apr 17 20:17:52 2007 +0300
@@ -346,8 +346,8 @@
 	}
 	mail_index_append_assign_uids(ctx->trans, uid, &next_uid);
 
-	t->ictx.first_saved_uid = uid;
-	t->ictx.last_saved_uid = next_uid - 1;
+	*t->ictx.first_saved_uid = uid;
+	*t->ictx.last_saved_uid = next_uid - 1;
 
 	/* update UIDs */
 	for (seq = t->first_saved_mail_seq; seq <= ctx->seq; seq++, uid++) {
--- a/src/lib-storage/index/index-storage.h	Tue Apr 17 19:40:55 2007 +0300
+++ b/src/lib-storage/index/index-storage.h	Tue Apr 17 20:17:52 2007 +0300
@@ -82,7 +82,7 @@
 	struct mail_cache_view *cache_view;
 	struct mail_cache_transaction_ctx *cache_trans;
 
-	uint32_t first_saved_uid, last_saved_uid;
+	uint32_t *first_saved_uid, *last_saved_uid;
 
 	unsigned int cache_trans_failed:1;
 };
--- a/src/lib-storage/index/index-transaction.c	Tue Apr 17 19:40:55 2007 +0300
+++ b/src/lib-storage/index/index-transaction.c	Tue Apr 17 20:17:52 2007 +0300
@@ -89,15 +89,13 @@
 	uint32_t seq;
 	uoff_t offset;
 
-	t->commit_flags = flags;
-	if (mail_index_transaction_commit(&itrans, &seq, &offset) < 0)
-		return -1;
+	*first_saved_uid_r = *last_saved_uid_r = 0;
 
-	if (t->first_saved_uid <= t->last_saved_uid) {
-		*first_saved_uid_r = t->first_saved_uid;
-		*last_saved_uid_r = t->last_saved_uid;
-	}
-	return 0;
+	t->commit_flags = flags;
+	t->first_saved_uid = first_saved_uid_r;
+	t->last_saved_uid = last_saved_uid_r;
+
+	return mail_index_transaction_commit(&itrans, &seq, &offset);
 }
 
 void index_transaction_rollback(struct mailbox_transaction_context *_t)
--- a/src/lib-storage/index/maildir/maildir-save.c	Tue Apr 17 19:40:55 2007 +0300
+++ b/src/lib-storage/index/maildir/maildir-save.c	Tue Apr 17 20:17:52 2007 +0300
@@ -556,8 +556,8 @@
 		i_assert(first_uid != 0);
 		mail_index_append_assign_uids(ctx->trans, first_uid, &next_uid);
 
-		t->ictx.first_saved_uid = first_uid;
-		t->ictx.last_saved_uid = next_uid - 1;
+		*t->ictx.first_saved_uid = first_uid;
+		*t->ictx.last_saved_uid = next_uid - 1;
 	}
 
 	flags = MAILDIR_UIDLIST_REC_FLAG_NEW_DIR |
--- a/src/lib-storage/index/mbox/mbox-save.c	Tue Apr 17 19:40:55 2007 +0300
+++ b/src/lib-storage/index/mbox/mbox-save.c	Tue Apr 17 20:17:52 2007 +0300
@@ -200,7 +200,7 @@
 	ctx->synced = TRUE;
 	t->mbox_modified = TRUE;
 
-	t->ictx.first_saved_uid = ctx->next_uid;
+	*t->ictx.first_saved_uid = ctx->next_uid;
 
 	mail_index_view_close(&view);
 }
@@ -650,7 +650,7 @@
 				&sync_size, sizeof(sync_size), TRUE);
 		}
 
-		t->ictx.last_saved_uid = ctx->next_uid - 1;
+		*t->ictx.last_saved_uid = ctx->next_uid - 1;
 	}
 
 	if (!ctx->synced && ctx->mbox->mbox_fd != -1 &&