changeset 2658:fd607e2be4a9 HEAD

Don't break if same mail is expunged multiple times.
author Timo Sirainen <tss@iki.fi>
date Thu, 23 Sep 2004 13:18:08 +0300
parents b89f471a0e04
children 33ad1877ca6d
files src/lib-index/mail-index-transaction.c
diffstat 1 files changed, 8 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-index/mail-index-transaction.c	Thu Sep 23 12:51:48 2004 +0300
+++ b/src/lib-index/mail-index-transaction.c	Thu Sep 23 13:18:08 2004 +0300
@@ -293,12 +293,15 @@
 	while (left_idx < right_idx) {
 		idx = (left_idx + right_idx) / 2;
 
-		if (data[idx].uid1 < seq)
+		if (data[idx].uid1 <= seq) {
+			if (data[idx].uid2 >= seq) {
+				/* it's already expunged */
+				return;
+			}
 			left_idx = idx+1;
-		else if (data[idx].uid1 > seq)
+		} else {
 			right_idx = idx;
-		else
-			break;
+		}
 	}
 
 	if (data[idx].uid2 < seq)
@@ -306,11 +309,7 @@
 
         /* idx == size couldn't happen because we already handle it above */
 	i_assert(idx < size && data[idx].uid1 >= seq);
-
-	if (data[idx].uid1 <= seq && data[idx].uid2 >= seq) {
-		/* already expunged */
-		return;
-	}
+	i_assert(data[idx].uid1 > seq || data[idx].uid2 < seq);
 
 	if (data[idx].uid1 == seq+1) {
 		data[idx].uid1 = seq;