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