diff --git a/src/plugins/virtual/virtual-config.c b/src/plugins/virtual/virtual-config.c index 0fbde87232..fd81372572 100644 --- a/src/plugins/virtual/virtual-config.c +++ b/src/plugins/virtual/virtual-config.c @@ -392,7 +392,7 @@ static int virtual_config_expand_wildcards(struct virtual_parse_context *ctx, struct mail_user *user = ctx->mbox->storage->storage.user; ARRAY_TYPE(virtual_backend_box) wildcard_boxes, neg_boxes, metadata_boxes; struct mailbox_list_iterate_context *iter; - struct virtual_backend_box *const *wboxes; + struct virtual_backend_box *const *wboxes, *const *boxp; const char **patterns; const struct mailbox_info *info; unsigned int i, j, count; @@ -440,6 +440,10 @@ static int virtual_config_expand_wildcards(struct virtual_parse_context *ctx, } for (i = 0; i < count; i++) mail_search_args_unref(&wboxes[i]->search_args); + array_foreach(&neg_boxes, boxp) + mail_search_args_unref(&(*boxp)->search_args); + array_foreach(&metadata_boxes, boxp) + mail_search_args_unref(&(*boxp)->search_args); if (mailbox_list_iter_deinit(&iter) < 0) { *error_r = mailbox_list_get_last_internal_error(user->namespaces->list, NULL); return -1;