Mercurial > dovecot > original-hg > dovecot-1.2
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;