dovecot: Don't store data->rec. It may not stay usable.
dovecot at dovecot.org
dovecot at dovecot.org
Sun Aug 12 18:03:05 EEST 2007
details: http://hg.dovecot.org/dovecot/rev/b5a23c868935
changeset: 6276:b5a23c868935
user: Timo Sirainen <tss at iki.fi>
date: Sun Aug 12 16:50:47 2007 +0300
description:
Don't store data->rec. It may not stay usable.
diffstat:
3 files changed, 7 insertions(+), 21 deletions(-)
src/lib-storage/index/index-mail.c | 3 +--
src/lib-storage/index/index-mail.h | 1 -
src/lib-storage/index/index-search.c | 24 ++++++------------------
diffs (89 lines):
diff -r 913b188f4dd4 -r b5a23c868935 src/lib-storage/index/index-mail.c
--- 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 @@ enum mail_flags index_mail_get_flags(str
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 @@ int index_mail_set_seq(struct mail *_mai
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 |
diff -r 913b188f4dd4 -r b5a23c868935 src/lib-storage/index/index-mail.h
--- 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 index_mail_data {
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;
diff -r 913b188f4dd4 -r b5a23c868935 src/lib-storage/index/index-search.c
--- 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 @@ static int search_arg_match_index(struct
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
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 @@ static bool search_match_next(struct ind
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);
More information about the dovecot-cvs
mailing list