i_array_init(&bbox->uids, 64);
i_array_init(&bbox->sync_pending_removes, 64);
- mail_search_args_init(bbox->search_args, bbox->box, FALSE, NULL);
return 1;
}
if (ret <= 0) {
if (ret < 0)
break;
- mail_search_args_unref(&bboxes[i]->search_args);
array_delete(&mbox->backend_boxes, i, 1);
bboxes = array_get(&mbox->backend_boxes, &count);
} else {
if (bboxes[i]->box == NULL)
continue;
- mail_search_args_deinit(bboxes[i]->search_args);
+ if (bboxes[i]->search_args != NULL)
+ mail_search_args_deinit(bboxes[i]->search_args);
mailbox_free(&bboxes[i]->box);
if (array_is_created(&bboxes[i]->sync_outside_expunges))
array_free(&bboxes[i]->sync_outside_expunges);
unsigned int wildcard:1;
unsigned int clear_recent:1;
unsigned int uids_nonsorted:1;
+ unsigned int search_args_initialized:1;
};
ARRAY_DEFINE_TYPE(virtual_backend_box, struct virtual_backend_box *);
trans = mailbox_transaction_begin(bbox->box, 0);
+ if (!bbox->search_args_initialized) {
+ mail_search_args_init(bbox->search_args, bbox->box, FALSE, NULL);
+ bbox->search_args_initialized = TRUE;
+ }
search_ctx = mailbox_search_init(trans, bbox->search_args, NULL,
0, NULL);
/* initialize the search result from all the existing messages in
virtual index. */
+ if (!bbox->search_args_initialized) {
+ mail_search_args_init(bbox->search_args, bbox->box, FALSE, NULL);
+ bbox->search_args_initialized = TRUE;
+ }
result = mailbox_search_result_alloc(bbox->box, bbox->search_args,
result_flags);
mailbox_search_result_initial_done(result);