Mercurial > dovecot > original-hg > dovecot-1.2
changeset 2904:642ba9cd3dac HEAD
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.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 29 Nov 2004 01:19:53 +0200 |
parents | bd8f47bda4c7 |
children | 1e0d71e67315 |
files | src/lib-index/mail-cache-compress.c src/lib-index/mail-index-sync-update.c src/lib-index/mail-index-sync.c src/lib-index/mail-index-transaction-view.c src/lib-index/mail-index-transaction.c src/lib-index/mail-index-view-private.h src/lib-index/mail-index-view-sync.c src/lib-index/mail-index-view.c src/lib-index/mail-index.h src/lib-storage/index/index-sync.c src/lib-storage/index/mbox/mbox-sync.c |
diffstat | 11 files changed, 37 insertions(+), 43 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-index/mail-cache-compress.c Mon Nov 29 01:02:01 2004 +0200 +++ b/src/lib-index/mail-cache-compress.c Mon Nov 29 01:19:53 2004 +0200 @@ -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,
--- a/src/lib-index/mail-index-sync-update.c Mon Nov 29 01:02:01 2004 +0200 +++ b/src/lib-index/mail-index-sync-update.c Mon Nov 29 01:19:53 2004 +0200 @@ -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);
--- a/src/lib-index/mail-index-sync.c Mon Nov 29 01:02:01 2004 +0200 +++ b/src/lib-index/mail-index-sync.c Mon Nov 29 01:19:53 2004 +0200 @@ -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;
--- a/src/lib-index/mail-index-transaction-view.c Mon Nov 29 01:02:01 2004 +0200 +++ b/src/lib-index/mail-index-transaction-view.c Mon Nov 29 01:19:53 2004 +0200 @@ -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); }
--- a/src/lib-index/mail-index-transaction.c Mon Nov 29 01:02:01 2004 +0200 +++ b/src/lib-index/mail-index-transaction.c Mon Nov 29 01:19:53 2004 +0200 @@ -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));
--- a/src/lib-index/mail-index-view-private.h Mon Nov 29 01:02:01 2004 +0200 +++ b/src/lib-index/mail-index-view-private.h Mon Nov 29 01:19:53 2004 +0200 @@ -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;
--- a/src/lib-index/mail-index-view-sync.c Mon Nov 29 01:02:01 2004 +0200 +++ b/src/lib-index/mail-index-view-sync.c Mon Nov 29 01:19:53 2004 +0200 @@ -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,
--- a/src/lib-index/mail-index-view.c Mon Nov 29 01:02:01 2004 +0200 +++ b/src/lib-index/mail-index-view.c Mon Nov 29 01:19:53 2004 +0200 @@ -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 =
--- a/src/lib-index/mail-index.h Mon Nov 29 01:02:01 2004 +0200 +++ b/src/lib-index/mail-index.h Mon Nov 29 01:19:53 2004 +0200 @@ -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);
--- a/src/lib-storage/index/index-sync.c Mon Nov 29 01:02:01 2004 +0200 +++ b/src/lib-storage/index/index-sync.c Mon Nov 29 01:19:53 2004 +0200 @@ -139,7 +139,7 @@ return &ctx->ctx; } - ctx->messages_count = mail_index_view_get_message_count(ibox->view); + ctx->messages_count = mail_index_view_get_messages_count(ibox->view); sync_mask = MAIL_INDEX_SYNC_MASK_ALL; if ((flags & MAILBOX_SYNC_FLAG_NO_EXPUNGES) != 0) @@ -242,7 +242,7 @@ mail_index_view_sync_end(ctx->sync_ctx); if (ret == 0) { - messages_count = mail_index_view_get_message_count(ibox->view); + messages_count = mail_index_view_get_messages_count(ibox->view); if (messages_count != ctx->messages_count) { index_mailbox_update_recent(ibox, ctx->messages_count+1,
--- a/src/lib-storage/index/mbox/mbox-sync.c Mon Nov 29 01:02:01 2004 +0200 +++ b/src/lib-storage/index/mbox/mbox-sync.c Mon Nov 29 01:19:53 2004 +0200 @@ -219,7 +219,8 @@ uint32_t messages_count; int ret = 0; - messages_count = mail_index_view_get_message_count(sync_ctx->sync_view); + messages_count = + mail_index_view_get_messages_count(sync_ctx->sync_view); while (sync_ctx->idx_seq <= messages_count) { ret = mail_index_lookup(sync_ctx->sync_view, sync_ctx->idx_seq, &rec); @@ -267,7 +268,8 @@ const void *data; int ret; - messages_count = mail_index_view_get_message_count(sync_ctx->sync_view); + messages_count = + mail_index_view_get_messages_count(sync_ctx->sync_view); while (sync_ctx->idx_seq <= messages_count) { ret = mail_index_lookup(sync_ctx->sync_view, sync_ctx->idx_seq, &rec); @@ -751,7 +753,7 @@ return -1; } sync_ctx->idx_seq = - mail_index_view_get_message_count(sync_view) + 1; + mail_index_view_get_messages_count(sync_view) + 1; return 1; } @@ -767,7 +769,8 @@ uoff_t offset; int ret, expunged; - messages_count = mail_index_view_get_message_count(sync_ctx->sync_view); + messages_count = + mail_index_view_get_messages_count(sync_ctx->sync_view); if (!mail_index_sync_have_more(sync_ctx->index_sync_ctx) || (!partial && min_message_count != 0)) {