# HG changeset patch # User Timo Sirainen # Date 1176830272 -10800 # Node ID 9805becea644688ce876d78f8d2eeee9f7648183 # Parent 896845fbc4ed2fd41024c9263cea71df04d81019 Fixed mailbox_transaction_commit_get_uids() to actually work and not just crash. diff -r 896845fbc4ed -r 9805becea644 src/lib-storage/index/cydir/cydir-save.c --- 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, diff -r 896845fbc4ed -r 9805becea644 src/lib-storage/index/dbox/dbox-save.c --- 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++) { diff -r 896845fbc4ed -r 9805becea644 src/lib-storage/index/index-storage.h --- 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; }; diff -r 896845fbc4ed -r 9805becea644 src/lib-storage/index/index-transaction.c --- 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) diff -r 896845fbc4ed -r 9805becea644 src/lib-storage/index/maildir/maildir-save.c --- 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 | diff -r 896845fbc4ed -r 9805becea644 src/lib-storage/index/mbox/mbox-save.c --- 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 &&