[dovecot-cvs] dovecot/src/lib-index
mail-index-transaction-private.h, 1.28,
1.29 mail-index-transaction.c, 1.72, 1.73
cras at dovecot.org
cras at dovecot.org
Sun Jan 15 02:11:38 EET 2006
Update of /var/lib/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv24229
Modified Files:
mail-index-transaction-private.h mail-index-transaction.c
Log Message:
Added some checks and better logging for figuring out why (*seq != 0) assert
happens.
Index: mail-index-transaction-private.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-transaction-private.h,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- mail-index-transaction-private.h 14 Jan 2006 18:47:34 -0000 1.28
+++ mail-index-transaction-private.h 15 Jan 2006 00:11:36 -0000 1.29
@@ -4,8 +4,8 @@
#include "mail-transaction-log.h"
struct mail_index_transaction_keyword_update {
- array_t ARRAY_DEFINE(add_seq, uint32_t);
- array_t ARRAY_DEFINE(remove_seq, uint32_t);
+ array_t ARRAY_DEFINE(add_seq, struct seq_range);
+ array_t ARRAY_DEFINE(remove_seq, struct seq_range);
};
struct mail_index_transaction {
Index: mail-index-transaction.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-transaction.c,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -d -r1.72 -r1.73
--- mail-index-transaction.c 14 Jan 2006 18:47:34 -0000 1.72
+++ mail-index-transaction.c 15 Jan 2006 00:11:36 -0000 1.73
@@ -121,15 +121,24 @@
seq = array_idx_modifyable(array, i);
for (j = 0; j <= range_count; j++, seq++) {
- if (*seq >= t->first_new_seq) {
+ i_assert(*seq > 0);
+
+ if (*seq >= t->first_new_seq)
rec = mail_index_transaction_lookup(t, *seq);
- *seq = rec->uid;
- } else {
+ else {
i_assert(*seq <= view->map->records_count);
- *seq = MAIL_INDEX_MAP_IDX(view->map,
- *seq - 1)->uid;
+ rec = MAIL_INDEX_MAP_IDX(view->map, *seq - 1);
}
- i_assert(*seq != 0);
+
+ if (rec->uid == 0) {
+ /* FIXME: replace with simple assert once we
+ figure out why this happens.. */
+ i_panic("seq = %u, rec->uid = %u, "
+ "first_new_seq = %u, records = %u",
+ *seq, rec->uid, t->first_new_seq,
+ view->map->records_count);
+ }
+ *seq = rec->uid;
}
}
}
More information about the dovecot-cvs
mailing list