[dovecot-cvs] dovecot/src/lib-index mail-transaction-util.c, 1.4,
1.5
cras at procontrol.fi
cras at procontrol.fi
Mon May 17 19:31:27 EEST 2004
- Previous message: [dovecot-cvs] dovecot/src/auth mycrypt.c,1.2,1.3
- Next message: [dovecot-cvs] dovecot/src/lib-index mail-index-sync.c, 1.13,
1.14 mail-transaction-util.c, 1.5, 1.6 mail-transaction-util.h,
1.1, 1.2 mail-transaction-log-view.c, 1.9, 1.10
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv16150
Modified Files:
mail-transaction-util.c
Log Message:
Expunge fix
Index: mail-transaction-util.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-index/mail-transaction-util.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- mail-transaction-util.c 16 May 2004 01:29:49 -0000 1.4
+++ mail-transaction-util.c 17 May 2004 16:31:25 -0000 1.5
@@ -130,7 +130,7 @@
const struct mail_transaction_expunge *src_end;
struct mail_transaction_expunge *dest;
struct mail_transaction_expunge new_exp;
- uint32_t cur_seq, prev_seq, expunges_before, count;
+ uint32_t expunges_before, count;
size_t first, i, dest_count;
i_assert(src_buf_size % sizeof(*src) == 0);
@@ -140,19 +140,17 @@
dest = buffer_get_modifyable_data(expunges_buf, &dest_count);
dest_count /= sizeof(*dest);
- cur_seq = prev_seq = 1; expunges_before = 0;
+ expunges_before = 0;
for (i = 0; src != src_end; src++) {
/* src[] must be sorted. */
i_assert(src+1 == src_end || src->seq1 < src[1].seq1);
for (; i < dest_count; i++) {
- count = dest[i].seq1 - prev_seq;
- if (cur_seq + count > src->seq1)
+ if (src->seq1 + expunges_before < dest[i].seq1)
break;
- cur_seq += count;
+ i_assert(src->uid2 > dest[i].uid1);
expunges_before += dest[i].seq2 - dest[i].seq1 + 1;
- prev_seq = dest[i].seq2+1;
}
new_exp = *src;
@@ -167,8 +165,11 @@
/* we can/must merge with next record */
count = dest[i].seq2 - dest[i].seq1 + 1;
expunges_before += count;
+
new_exp.seq2 += count;
- new_exp.uid2 = dest[i].uid2;
+ if (new_exp.seq2 == dest[i].seq2)
+ new_exp.uid2 = dest[i].uid2;
+ i_assert(new_exp.uid2 >= dest[i].uid2);
i++;
}
- Previous message: [dovecot-cvs] dovecot/src/auth mycrypt.c,1.2,1.3
- Next message: [dovecot-cvs] dovecot/src/lib-index mail-index-sync.c, 1.13,
1.14 mail-transaction-util.c, 1.5, 1.6 mail-transaction-util.h,
1.1, 1.2 mail-transaction-log-view.c, 1.9, 1.10
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the dovecot-cvs
mailing list