dovecot-2.0: maildir: Expunging last messages from mailbox cause...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Oct 23 00:56:07 EEST 2009
details: http://hg.dovecot.org/dovecot-2.0/rev/47e1756f6047
changeset: 10132:47e1756f6047
user: Timo Sirainen <tss at iki.fi>
date: Thu Oct 22 17:56:01 2009 -0400
description:
maildir: Expunging last messages from mailbox caused crashing.
diffstat:
1 file changed, 8 insertions(+), 8 deletions(-)
src/lib-storage/index/maildir/maildir-sync-index.c | 16 ++++++++--------
diffs (55 lines):
diff -r 9ef0821a2ce7 -r 47e1756f6047 src/lib-storage/index/maildir/maildir-sync-index.c
--- a/src/lib-storage/index/maildir/maildir-sync-index.c Thu Oct 22 12:58:35 2009 -0400
+++ b/src/lib-storage/index/maildir/maildir-sync-index.c Thu Oct 22 17:56:01 2009 -0400
@@ -29,7 +29,7 @@ struct maildir_index_sync_context {
enum mail_flags flags;
ARRAY_TYPE(keyword_indexes) keywords, idx_keywords;
- uint32_t seq, uid;
+ uint32_t /*seq, */uid;
bool update_maildir_hdr_cur;
};
@@ -45,10 +45,8 @@ maildir_index_expunge(struct maildir_ind
enum maildir_uidlist_rec_flag flags;
uint8_t guid_128[MAIL_GUID_128_SIZE];
const char *fname;
- uint32_t uid;
-
- mail_index_lookup_uid(ctx->view, seq, &uid);
- if (maildir_uidlist_lookup(ctx->mbox->uidlist, uid,
+
+ if (maildir_uidlist_lookup(ctx->mbox->uidlist, ctx->uid,
&flags, &fname) <= 0)
memset(guid_128, 0, sizeof(guid_128));
else T_BEGIN {
@@ -56,7 +54,7 @@ maildir_index_expunge(struct maildir_ind
guid_128);
} T_END;
- mail_index_expunge_guid(ctx->trans, ctx->seq, guid_128);
+ mail_index_expunge_guid(ctx->trans, seq, guid_128);
}
static bool
@@ -495,7 +493,7 @@ int maildir_sync_index(struct maildir_in
ctx->flags &= ~mbox->ibox.box.private_flags_mask;
again:
- ctx->seq = ++seq;
+ seq++;
ctx->uid = uid;
if (seq > hdr->messages_count) {
@@ -605,8 +603,10 @@ int maildir_sync_index(struct maildir_in
if (!partial) {
/* expunge the rest */
- for (seq++; seq <= hdr->messages_count; seq++)
+ for (seq++; seq <= hdr->messages_count; seq++) {
+ mail_index_lookup_uid(ctx->view, seq, &ctx->uid);
maildir_index_expunge(ctx, seq);
+ }
}
/* add \Recent flags. use updated view so it contains newly
More information about the dovecot-cvs
mailing list