From: Timo Sirainen Date: Sun, 16 May 2004 23:06:34 +0000 (+0300) Subject: fixes X-Git-Tag: 1.1.alpha1~4084 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7b91a93473c88679b7d44c97ec99f915221b3f94;p=thirdparty%2Fdovecot%2Fcore.git fixes --HG-- branch : HEAD --- diff --git a/src/lib-index/mail-transaction-log.c b/src/lib-index/mail-transaction-log.c index bd37172282..e931f10c73 100644 --- a/src/lib-index/mail-transaction-log.c +++ b/src/lib-index/mail-transaction-log.c @@ -914,20 +914,28 @@ log_view_fix_sequences(struct mail_index_view *view, buffer_t *view_expunges, if (!two) continue; - if (exp->seq2 >= seq[1]) + exp2 = exp; + count = 0; + do { + /* we point to next non-expunged message */ + seq[0] = exp2->seq2 + 1; + count += exp->seq2 - exp->seq1 + 1; + exp2++; + } while (exp2 != exp_end && exp2->seq1 == seq[0]); + + if (seq[0] > seq[1] || + seq[0] > view->map->records_count) { + /* it's all expunged */ continue; + } - /* we point to next non-expunged message */ - seq[0] = exp->seq2 + 1; if (uids) { /* get new first UID */ ret = mail_index_lookup_uid(view, seq[0], &seq[2]); i_assert(ret == 0); } - - expunges_before += exp->seq2 - exp->seq1 + 1; - exp++; + seq[0] -= count; } seq[0] -= expunges_before;