]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fixes
authorTimo Sirainen <tss@iki.fi>
Sun, 16 May 2004 23:06:34 +0000 (02:06 +0300)
committerTimo Sirainen <tss@iki.fi>
Sun, 16 May 2004 23:06:34 +0000 (02:06 +0300)
--HG--
branch : HEAD

src/lib-index/mail-transaction-log.c

index bd371722823b7538e12aa35dfe9d19b53cf85c8d..e931f10c73c79f4fc4b21c6e9a81d3640e050081 100644 (file)
@@ -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;