Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8147:b7e097200892 HEAD
Thread index bugfix.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 01 Sep 2008 15:30:40 +0300 |
parents | 70b53e9b232e |
children | 920c1ca3a8db |
files | src/lib-storage/index/index-thread.c |
diffstat | 1 files changed, 9 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/index-thread.c Mon Sep 01 15:17:00 2008 +0300 +++ b/src/lib-storage/index/index-thread.c Mon Sep 01 15:30:40 2008 +0300 @@ -432,7 +432,15 @@ should already be in msgid_map. */ msgid_map = array_get(tbox->msgid_map, &map_count); uids = array_get(added_uids, &uid_count); - i_assert(uid_count == 0 || msgid_map[j].uid <= uids[0].seq1); + if (uid_count == 0) + return; + + (void)bsearch_insert_pos(&uids[0].seq1, msgid_map, map_count, + sizeof(*msgid_map), msgid_map_cmp, &j); + i_assert(j < map_count); + while (j > 0 && msgid_map[j-1].uid == msgid_map[j].uid) + j--; + for (i = 0; i < uid_count; i++) { for (uid = uids[i].seq1; uid <= uids[i].seq2; uid++) { while (j < map_count && msgid_map[j].uid < uid)