]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
virtual: wanted_headers needs to be kept referenced.
authorTimo Sirainen <tss@iki.fi>
Tue, 19 Jan 2010 14:52:19 +0000 (16:52 +0200)
committerTimo Sirainen <tss@iki.fi>
Tue, 19 Jan 2010 14:52:19 +0000 (16:52 +0200)
--HG--
branch : HEAD

src/plugins/virtual/virtual-mail.c

index 696631d88c230b08431c9b70cc1dfb984d1387c7..209bb4cca152bd5fea3317d804857879304cd030 100644 (file)
@@ -45,7 +45,11 @@ virtual_mail_alloc(struct mailbox_transaction_context *t,
        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;
 }
@@ -61,6 +65,9 @@ static void virtual_mail_free(struct mail *mail)
                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);
 }