Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6276:b5a23c868935 HEAD
Don't store data->rec. It may not stay usable.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 12 Aug 2007 16:50:47 +0300 |
parents | 913b188f4dd4 |
children | 5f66277bbe40 |
files | src/lib-storage/index/index-mail.c src/lib-storage/index/index-mail.h src/lib-storage/index/index-search.c |
diffstat | 3 files changed, 7 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/index/index-mail.c Sun Aug 12 16:43:05 2007 +0300 +++ b/src/lib-storage/index/index-mail.c Sun Aug 12 16:50:47 2007 +0300 @@ -116,7 +116,6 @@ struct index_mail *mail = (struct index_mail *) _mail; struct index_mail_data *data = &mail->data; - data->flags = data->rec->flags & MAIL_FLAGS_NONRECENT; if (index_mailbox_is_recent(mail->ibox, _mail->uid)) data->flags |= MAIL_RECENT; @@ -949,8 +948,8 @@ index_mail_reset(mail); - data->rec = rec; data->seq = seq; + data->flags = rec->flags & MAIL_FLAGS_NONRECENT; if ((mail->wanted_fields & (MAIL_FETCH_NUL_STATE | MAIL_FETCH_IMAP_BODY |
--- a/src/lib-storage/index/index-mail.h Sun Aug 12 16:43:05 2007 +0300 +++ b/src/lib-storage/index/index-mail.h Sun Aug 12 16:50:47 2007 +0300 @@ -81,7 +81,6 @@ struct message_part_envelope_data *envelope_data; uint32_t seq; - const struct mail_index_record *rec; uint32_t cache_flags; enum index_mail_access_part access_part;
--- a/src/lib-storage/index/index-search.c Sun Aug 12 16:43:05 2007 +0300 +++ b/src/lib-storage/index/index-search.c Sun Aug 12 16:50:47 2007 +0300 @@ -99,21 +99,21 @@ enum mail_search_arg_type type, const char *value) { - const struct mail_index_record *rec = imail->data.rec; + enum mail_flags flags = imail->data.flags; const char *const *keywords; switch (type) { /* flags */ case SEARCH_ANSWERED: - return rec->flags & MAIL_ANSWERED; + return flags & MAIL_ANSWERED; case SEARCH_DELETED: - return rec->flags & MAIL_DELETED; + return flags & MAIL_DELETED; case SEARCH_DRAFT: - return rec->flags & MAIL_DRAFT; + return flags & MAIL_DRAFT; case SEARCH_FLAGGED: - return rec->flags & MAIL_FLAGGED; + return flags & MAIL_FLAGGED; case SEARCH_SEEN: - return rec->flags & MAIL_SEEN; + return flags & MAIL_SEEN; case SEARCH_RECENT: return mail_get_flags(&imail->mail.mail) & MAIL_RECENT; case SEARCH_KEYWORD: @@ -162,12 +162,6 @@ static void search_index_arg(struct mail_search_arg *arg, struct index_search_context *ctx) { - if (ctx->imail->data.rec == NULL) { - /* expunged message */ - ARG_SET_RESULT(arg, 0); - return; - } - switch (search_arg_match_index(ctx->imail, arg->type, arg->value.str)) { case -1: @@ -903,12 +897,6 @@ if (ret >= 0) return ret > 0; - if (ctx->imail->data.rec == NULL) { - /* expunged message, no way to check if the rest would have - matched */ - return FALSE; - } - /* next search only from cached arguments */ ret = mail_search_args_foreach(ctx->mail_ctx.args, search_cached_arg, ctx);