changeset 8931:e5633843c336 HEAD

virtual: Crashfixes.
author Timo Sirainen <tss@iki.fi>
date Wed, 08 Apr 2009 18:17:02 -0400
parents a876b1fafa88
children 99ecc7f748a8
files src/plugins/virtual/virtual-mail.c
diffstat 1 files changed, 7 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/plugins/virtual/virtual-mail.c	Wed Apr 08 13:46:38 2009 -0400
+++ b/src/plugins/virtual/virtual-mail.c	Wed Apr 08 18:17:02 2009 -0400
@@ -42,7 +42,10 @@
 	vmail->imail.trans = (struct index_transaction_context *)t;
 
 	vmail->wanted_fields = wanted_fields;
-	vmail->wanted_headers = wanted_headers;
+	if (wanted_headers != NULL) {
+		vmail->wanted_headers = wanted_headers;
+		mailbox_header_lookup_ref(wanted_headers);
+	}
 	i_array_init(&vmail->backend_mails, array_count(&mbox->backend_boxes));
 	return &vmail->imail.mail.mail;
 }
@@ -58,6 +61,8 @@
 		mail_free(&mails[i]);
 	array_free(&vmail->backend_mails);
 
+	if (vmail->wanted_headers != NULL)
+		mailbox_header_lookup_unref(&vmail->wanted_headers);
 	pool_unref(&vmail->imail.data_pool);
 	pool_unref(&vmail->imail.mail.pool);
 }
@@ -130,14 +135,13 @@
 
 static bool virtual_mail_set_uid(struct mail *mail, uint32_t uid)
 {
-	struct virtual_mail *vmail = (struct virtual_mail *)mail;
 	struct virtual_mailbox *mbox = (struct virtual_mailbox *)mail->box;
 	uint32_t seq;
 
 	if (!mail_index_lookup_seq(mbox->ibox.view, uid, &seq))
 		return FALSE;
 
-	virtual_mail_set_seq(vmail->backend_mail, seq);
+	virtual_mail_set_seq(mail, seq);
 	return TRUE;
 }