]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
fts-lucene: Fixed crash on rescan
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 29 Apr 2016 07:53:37 +0000 (10:53 +0300)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 29 Apr 2016 07:53:37 +0000 (10:53 +0300)
Broken by af2564c7f9e05ad245a032efdfbc5abbb9b70f1e - rescan_ctx can be NULL.

src/plugins/fts-lucene/lucene-wrapper.cc

index 718502290ef339e30cedae76b9d396228d662c52..89f99a3fcd9312ec3d998e155e30bee39d55f73c 100644 (file)
@@ -821,13 +821,14 @@ rescan_next(struct rescan_context *ctx, Document *doc)
 
 static void
 rescan_clear_unseen_mailbox(struct rescan_context *rescan_ctx,
+                           struct mailbox_list *list,
                            const char *vname,
                            const struct fts_index_header *hdr)
 {
        struct mailbox *box;
        struct mailbox_metadata metadata;
 
-       box = mailbox_alloc(rescan_ctx->index->list, vname,
+       box = mailbox_alloc(list, vname,
                            (enum mailbox_flags)0);
        if (mailbox_open(box) == 0 &&
            mailbox_get_metadata(box, MAILBOX_METADATA_GUID,
@@ -860,7 +861,7 @@ static void rescan_clear_unseen_mailboxes(struct lucene_index *index,
 
        iter = mailbox_list_iter_init(index->list, "*", iter_flags);
        while ((info = mailbox_list_iter_next(iter)) != NULL)
-               rescan_clear_unseen_mailbox(rescan_ctx, info->vname, &hdr);
+               rescan_clear_unseen_mailbox(rescan_ctx, index->list, info->vname, &hdr);
        (void)mailbox_list_iter_deinit(&iter);
 
        if (ns->prefix_len > 0 &&
@@ -868,7 +869,7 @@ static void rescan_clear_unseen_mailboxes(struct lucene_index *index,
                /* namespace prefix itself isn't returned by the listing */
                vname = t_strndup(index->list->ns->prefix,
                                  index->list->ns->prefix_len-1);
-               rescan_clear_unseen_mailbox(rescan_ctx, vname, &hdr);
+               rescan_clear_unseen_mailbox(rescan_ctx, index->list, vname, &hdr);
        }
 }