# HG changeset patch # User Timo Sirainen # Date 1240253107 14400 # Node ID 7c93e6c9cb0aae7b22f8c8a1358f240967f320cf # Parent 9336cf20a96c2237264236f5bc8b3dd42443bb8c virtual: Some cleanups and fixes. diff -r 9336cf20a96c -r 7c93e6c9cb0a src/plugins/virtual/virtual-sync.c --- 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;