[dovecot-cvs] dovecot/src/lib-index mail-cache-compress.c, 1.28,
1.29 mail-index-sync-update.c, 1.59, 1.60 mail-index-sync.c,
1.42, 1.43 mail-index-transaction-view.c, 1.9,
1.10 mail-index-transaction.c, 1.35,
1.36 mail-index-view-private.h, 1.15,
1.16 mail-index-view-sync.c, 1.30, 1.31 mail-index-view.c,
1.29, 1.30 mail-index.h, 1.137, 1.138
cras at dovecot.org
cras at dovecot.org
Mon Nov 29 01:19:56 EET 2004
Update of /var/lib/cvs/dovecot/src/lib-index
In directory talvi:/tmp/cvs-serv8454/lib-index
Modified Files:
mail-cache-compress.c mail-index-sync-update.c
mail-index-sync.c mail-index-transaction-view.c
mail-index-transaction.c mail-index-view-private.h
mail-index-view-sync.c mail-index-view.c mail-index.h
Log Message:
Removed view->messages_count, view->hdr.messages_count is enough. Also fixes
assert crash in mail_index_bsearch_uid().
Renamed .._get_message_count() to get_messages_count() to be more
consistent.
Index: mail-cache-compress.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-cache-compress.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- mail-cache-compress.c 24 Nov 2004 18:39:57 -0000 1.28
+++ mail-cache-compress.c 28 Nov 2004 23:19:53 -0000 1.29
@@ -127,7 +127,7 @@
idx_hdr = mail_index_get_header(view);
if (idx_hdr->day_first_uid[7] == 0) {
first_new_seq = 1;
- message_count = mail_index_view_get_message_count(view);
+ message_count = mail_index_view_get_messages_count(view);
} else {
if (mail_index_lookup_uid_range(view, idx_hdr->day_first_uid[7],
(uint32_t)-1, &first_new_seq,
Index: mail-index-sync-update.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-sync-update.c,v
retrieving revision 1.59
retrieving revision 1.60
diff -u -d -r1.59 -r1.60
--- mail-index-sync-update.c 28 Nov 2004 23:02:01 -0000 1.59
+++ mail-index-sync-update.c 28 Nov 2004 23:19:53 -0000 1.60
@@ -250,7 +250,6 @@
map->records_count -= count;
map->hdr.messages_count -= count;
- view->messages_count -= count;
if (map->buffer != NULL) {
buffer_set_used_size(map->buffer, map->records_count *
@@ -291,7 +290,6 @@
map->hdr.messages_count++;
map->hdr.next_uid = rec->uid+1;
- view->messages_count++;
map->records_count++;
if ((rec->flags & MAIL_INDEX_MAIL_FLAG_DIRTY) != 0)
@@ -712,7 +710,7 @@
ext->hdr_size), 0, ext->hdr_size);
map->hdr_base = map->hdr_copy_buf->data;
- for (i = 0; i < view->messages_count; i++) {
+ for (i = 0; i < view->map->records_count; i++) {
rec = MAIL_INDEX_MAP_IDX(view->map, i);
memset(PTR_OFFSET(rec, ext->record_offset), 0,
ext->record_size);
@@ -1146,7 +1144,6 @@
}
i_assert(map->records_count == map->hdr.messages_count);
- i_assert(view->messages_count == map->hdr.messages_count);
mail_transaction_log_get_head(index->log, &seq, &offset);
Index: mail-index-sync.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-sync.c,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -d -r1.42 -r1.43
--- mail-index-sync.c 24 Nov 2004 20:42:02 -0000 1.42
+++ mail-index-sync.c 28 Nov 2004 23:19:53 -0000 1.43
@@ -151,7 +151,7 @@
memset(&update, 0, sizeof(update));
- messages_count = mail_index_view_get_message_count(ctx->view);
+ messages_count = mail_index_view_get_messages_count(ctx->view);
for (seq = 1; seq <= messages_count; seq++) {
if (mail_index_lookup(ctx->view, seq, &rec) < 0)
return -1;
@@ -181,7 +181,7 @@
memset(&update, 0, sizeof(update));
- messages_count = mail_index_view_get_message_count(ctx->view);
+ messages_count = mail_index_view_get_messages_count(ctx->view);
for (seq = 1; seq <= messages_count; seq++) {
if (mail_index_lookup(ctx->view, seq, &rec) < 0)
return -1;
Index: mail-index-transaction-view.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-transaction-view.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- mail-index-transaction-view.c 24 Nov 2004 18:39:57 -0000 1.9
+++ mail-index-transaction-view.c 28 Nov 2004 23:19:53 -0000 1.10
@@ -26,7 +26,7 @@
struct mail_index_view_transaction *tview =
(struct mail_index_view_transaction *)view;
- return view->messages_count +
+ return view->hdr.messages_count +
(tview->t->last_new_seq == 0 ? 0 :
tview->t->last_new_seq - tview->t->first_new_seq);
}
Index: mail-index-transaction.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-transaction.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- mail-index-transaction.c 13 Nov 2004 23:08:07 -0000 1.35
+++ mail-index-transaction.c 28 Nov 2004 23:19:53 -0000 1.36
@@ -29,7 +29,7 @@
t->view = view;
t->hide_transaction = hide;
t->external = external;
- t->first_new_seq = mail_index_view_get_message_count(t->view)+1;
+ t->first_new_seq = mail_index_view_get_messages_count(t->view)+1;
if (view->syncing) {
/* transaction view cannot work if new records are being added
@@ -255,7 +255,7 @@
unsigned int idx, left_idx, right_idx;
size_t size;
- i_assert(seq > 0 && seq <= mail_index_view_get_message_count(t->view));
+ i_assert(seq > 0 && seq <= mail_index_view_get_messages_count(t->view));
t->log_updates = TRUE;
exp.uid1 = exp.uid2 = seq;
@@ -386,7 +386,7 @@
return;
}
- i_assert(seq > 0 && seq <= mail_index_view_get_message_count(t->view));
+ i_assert(seq > 0 && seq <= mail_index_view_get_messages_count(t->view));
/* first get group updates into same structure. this allows faster
updates if same mails have multiple flag updates during same
@@ -665,7 +665,7 @@
size_t size;
i_assert(seq > 0 &&
- (seq <= mail_index_view_get_message_count(t->view) ||
+ (seq <= mail_index_view_get_messages_count(t->view) ||
seq <= t->last_new_seq));
i_assert(ext_id < index->extensions->used / sizeof(*ext));
Index: mail-index-view-private.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-view-private.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -d -r1.15 -r1.16
--- mail-index-view-private.h 24 Nov 2004 18:39:57 -0000 1.15
+++ mail-index-view-private.h 28 Nov 2004 23:19:53 -0000 1.16
@@ -5,7 +5,7 @@
struct mail_index_view_methods {
void (*close)(struct mail_index_view *view);
- uint32_t (*get_message_count)(struct mail_index_view *view);
+ uint32_t (*get_messages_count)(struct mail_index_view *view);
const struct mail_index_header *
(*get_header)(struct mail_index_view *view);
int (*lookup_full)(struct mail_index_view *view, uint32_t seq,
@@ -39,7 +39,6 @@
buffer_t *map_refs;
struct mail_index_header hdr;
- uint32_t messages_count; /* last synced one, map may be different */
uint32_t log_file_seq;
uoff_t log_file_offset;
Index: mail-index-view-sync.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-view-sync.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -d -r1.30 -r1.31
--- mail-index-view-sync.c 14 Nov 2004 01:23:21 -0000 1.30
+++ mail-index-view-sync.c 28 Nov 2004 23:19:53 -0000 1.31
@@ -125,7 +125,8 @@
mail_index_sync_map_init(&ctx->sync_map_ctx, view,
MAIL_INDEX_SYNC_HANDLER_VIEW);
- if ((sync_mask & MAIL_INDEX_SYNC_TYPE_EXPUNGE) != 0) {
+ if ((sync_mask & MAIL_INDEX_SYNC_TYPE_EXPUNGE) != 0 &&
+ (sync_mask & MAIL_INDEX_SYNC_TYPE_APPEND) != 0) {
view->new_map = view->index->map;
view->new_map->refcount++;
@@ -139,7 +140,7 @@
if (view->map != view->index->map) {
ctx->sync_map_update = TRUE;
- view->map->records_count = view->messages_count;
+ view->map->records_count = view->hdr.messages_count;
}
map = mail_index_map_to_memory(view->map,
@@ -359,12 +360,6 @@
view->map = view->new_map;
view->new_map = NULL;
}
-
- if ((ctx->trans_sync_mask & MAIL_TRANSACTION_APPEND) != 0) {
- i_assert(view->messages_count == view->map->records_count ||
- !ctx->sync_map_update);
- view->messages_count = view->map->records_count;
- }
view->hdr = view->map->hdr;
(void)mail_transaction_log_view_set(view->log_view,
Index: mail-index-view.c
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index-view.c,v
retrieving revision 1.29
retrieving revision 1.30
diff -u -d -r1.29 -r1.30
--- mail-index-view.c 24 Nov 2004 18:39:57 -0000 1.29
+++ mail-index-view.c 28 Nov 2004 23:19:53 -0000 1.30
@@ -18,7 +18,6 @@
dest->map = src->map;
dest->map->refcount++;
dest->hdr = src->hdr;
- dest->messages_count = src->messages_count;
dest->log_file_seq = src->log_file_seq;
dest->log_file_offset = src->log_file_offset;
@@ -159,9 +158,9 @@
buffer_set_used_size(view->map_refs, 0);
}
-static uint32_t _view_get_message_count(struct mail_index_view *view)
+static uint32_t _view_get_messages_count(struct mail_index_view *view)
{
- return view->messages_count;
+ return view->hdr.messages_count;
}
static const struct mail_index_header *
@@ -178,7 +177,7 @@
const struct mail_index_record *rec, *n_rec;
uint32_t uid;
- i_assert(seq > 0 && seq <= mail_index_view_get_message_count(view));
+ i_assert(seq > 0 && seq <= mail_index_view_get_messages_count(view));
if (mail_index_view_lock(view) < 0)
return -1;
@@ -229,7 +228,7 @@
static int _view_lookup_uid(struct mail_index_view *view, uint32_t seq,
uint32_t *uid_r)
{
- i_assert(seq > 0 && seq <= mail_index_view_get_message_count(view));
+ i_assert(seq > 0 && seq <= mail_index_view_get_messages_count(view));
if (mail_index_view_lock(view) < 0)
return -1;
@@ -245,13 +244,13 @@
const struct mail_index_record *rec_base, *rec;
uint32_t idx, left_idx, right_idx, record_size;
- i_assert(view->messages_count <= view->map->records_count);
+ i_assert(view->hdr.messages_count <= view->map->records_count);
rec_base = view->map->records;
record_size = view->map->hdr.record_size;
idx = left_idx = *left_idx_p;
- right_idx = view->messages_count;
+ right_idx = view->hdr.messages_count;
while (left_idx < right_idx) {
idx = (left_idx + right_idx) / 2;
@@ -265,7 +264,7 @@
break;
}
- if (idx == view->messages_count) {
+ if (idx == view->hdr.messages_count) {
/* no messages available */
return 0;
}
@@ -276,7 +275,7 @@
if (nearest_side > 0) {
/* we want uid or larger */
return rec->uid > uid ? idx+1 :
- idx == view->messages_count-1 ? 0 : idx+2;
+ idx == view->hdr.messages_count-1 ? 0 : idx+2;
} else {
/* we want uid or smaller */
return rec->uid < uid ? idx + 1 : idx;
@@ -358,7 +357,9 @@
return 0;
}
- for (; seq <= view->messages_count; seq++) {
+ i_assert(view->hdr.messages_count <= view->map->records_count);
+
+ for (; seq <= view->hdr.messages_count; seq++) {
rec = MAIL_INDEX_MAP_IDX(view->map, seq-1);
if ((rec->flags & flags_mask) == (uint8_t)flags) {
*seq_r = seq;
@@ -426,9 +427,9 @@
view->methods.close(view);
}
-uint32_t mail_index_view_get_message_count(struct mail_index_view *view)
+uint32_t mail_index_view_get_messages_count(struct mail_index_view *view)
{
- return view->messages_count;
+ return view->methods.get_messages_count(view);
}
const struct mail_index_header *
@@ -504,7 +505,7 @@
static struct mail_index_view_methods view_methods = {
_view_close,
- _view_get_message_count,
+ _view_get_messages_count,
_view_get_header,
_view_lookup_full,
_view_lookup_uid,
@@ -529,7 +530,6 @@
view->map->refcount++;
view->hdr = view->map->hdr;
- view->messages_count = view->map->records_count;
view->log_file_seq = view->map->hdr.log_file_seq;
view->log_file_offset =
Index: mail-index.h
===================================================================
RCS file: /var/lib/cvs/dovecot/src/lib-index/mail-index.h,v
retrieving revision 1.137
retrieving revision 1.138
diff -u -d -r1.137 -r1.138
--- mail-index.h 24 Nov 2004 20:40:39 -0000 1.137
+++ mail-index.h 28 Nov 2004 23:19:53 -0000 1.138
@@ -165,7 +165,7 @@
/* Call whenever you've done with requesting messages from view for a while. */
void mail_index_view_unlock(struct mail_index_view *view);
/* Returns number of mails in view. */
-uint32_t mail_index_view_get_message_count(struct mail_index_view *view);
+uint32_t mail_index_view_get_messages_count(struct mail_index_view *view);
/* Returns TRUE if we lost track of changes for some reason. */
int mail_index_view_is_inconsistent(struct mail_index_view *view);
More information about the dovecot-cvs
mailing list