[dovecot-cvs] dovecot/src/lib-index mail-transaction-log.c, 1.25, 1.26

cras at procontrol.fi cras at procontrol.fi
Mon May 17 02:06:36 EEST 2004


Update of /home/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv1785

Modified Files:
	mail-transaction-log.c 
Log Message:
fixes



Index: mail-transaction-log.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-transaction-log.c,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -d -r1.25 -r1.26
--- mail-transaction-log.c	16 May 2004 01:28:42 -0000	1.25
+++ mail-transaction-log.c	16 May 2004 23:06:34 -0000	1.26
@@ -914,20 +914,28 @@
 			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;
 



More information about the dovecot-cvs mailing list