Mercurial > dovecot > original-hg > dovecot-1.2
changeset 8973:796149c5f3f0 HEAD
virtual: Some cleanups and fixes.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 20 Apr 2009 14:45:07 -0400 |
parents | 9ab0177cd004 |
children | 1f4f68091243 |
files | src/plugins/virtual/virtual-sync.c |
diffstat | 1 files changed, 8 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/virtual/virtual-sync.c Mon Apr 20 14:43:15 2009 -0400 +++ b/src/plugins/virtual/virtual-sync.c Mon Apr 20 14:45:07 2009 -0400 @@ -489,7 +489,7 @@ { const struct seq_range *uids; struct virtual_backend_uidmap *uidmap; - unsigned int i, src, dest, uid_count, rec_count, left; + unsigned int i, src, dest, uid_count, rec_count; uint32_t uid, vseq; uids = array_get(removed_uids, &uid_count); @@ -507,7 +507,8 @@ i_unreached(); /* remove the unwanted messages */ - for (i = src = dest = 0; i < uid_count; i++) { + dest = src; + for (i = 0; i < uid_count; i++) { uid = uids[i].seq1; while (uidmap[src].real_uid != uid) { uidmap[dest++] = uidmap[src++]; @@ -515,6 +516,8 @@ } for (; uid <= uids[i].seq2; uid++, src++) { + i_assert(src < rec_count); + i_assert(uidmap[src].real_uid == uid); if (!mail_index_lookup_seq(ctx->sync_view, uidmap[src].virtual_uid, &vseq)) @@ -522,8 +525,7 @@ mail_index_expunge(ctx->trans, vseq); } } - left = rec_count - src; - array_delete(&bbox->uids, dest, src - dest); + array_delete(&bbox->uids, dest, rec_count - dest); } static void @@ -576,6 +578,8 @@ } for (; add_uid <= added_uids[i].seq2; add_uid++, dest++) { + i_assert(dest < rec_count); + uidmap[dest].real_uid = add_uid; uidmap[dest].virtual_uid = 0;