dovecot-1.3: virtual: Some cleanups and fixes.
dovecot at dovecot.org
dovecot at dovecot.org
Mon Apr 20 21:45:27 EEST 2009
details: http://hg.dovecot.org/dovecot-1.3/rev/7c93e6c9cb0a
changeset: 9144:7c93e6c9cb0a
user: Timo Sirainen <tss at iki.fi>
date: Mon Apr 20 14:45:07 2009 -0400
description:
virtual: Some cleanups and fixes.
diffstat:
1 file changed, 8 insertions(+), 4 deletions(-)
src/plugins/virtual/virtual-sync.c | 12 ++++++++----
diffs (50 lines):
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 @@ virtual_sync_mailbox_box_remove(struct v
{
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 @@ virtual_sync_mailbox_box_remove(struct v
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 @@ virtual_sync_mailbox_box_remove(struct v
}
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 @@ virtual_sync_mailbox_box_remove(struct v
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 @@ virtual_sync_mailbox_box_add(struct virt
}
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;
More information about the dovecot-cvs
mailing list