Skip to content

Commit

Permalink
lib-storage: Add mail_search_arg_one_deinit()
Browse files Browse the repository at this point in the history
  • Loading branch information
sirainen authored and GitLab committed Jun 8, 2017
1 parent 352bbeb commit 1db237d
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 28 deletions.
56 changes: 29 additions & 27 deletions src/lib-storage/mail-search.c
Expand Up @@ -146,36 +146,38 @@ void mail_search_args_init(struct mail_search_args *args,

void mail_search_arg_deinit(struct mail_search_arg *arg)
{
for (; arg != NULL; arg = arg->next) {
switch (arg->type) {
case SEARCH_MODSEQ:
case SEARCH_KEYWORDS:
if (arg->initialized.keywords == NULL)
break;
mailbox_keywords_unref(&arg->initialized.keywords);
break;
case SEARCH_MAILBOX_GLOB:
if (arg->initialized.mailbox_glob == NULL)
break;
for (; arg != NULL; arg = arg->next)
mail_search_arg_one_deinit(arg);
}

imap_match_deinit(&arg->initialized.mailbox_glob);
break;
case SEARCH_INTHREAD:
i_assert(arg->initialized.search_args->refcount > 0);
if (arg->value.search_result != NULL) {
mailbox_search_result_free(
&arg->value.search_result);
}
arg->initialized.search_args->refcount--;
arg->initialized.search_args->box = NULL;
/* fall through */
case SEARCH_SUB:
case SEARCH_OR:
mail_search_arg_deinit(arg->value.subargs);
void mail_search_arg_one_deinit(struct mail_search_arg *arg)
{
switch (arg->type) {
case SEARCH_MODSEQ:
case SEARCH_KEYWORDS:
if (arg->initialized.keywords == NULL)
break;
default:
mailbox_keywords_unref(&arg->initialized.keywords);
break;
case SEARCH_MAILBOX_GLOB:
if (arg->initialized.mailbox_glob == NULL)
break;
}

imap_match_deinit(&arg->initialized.mailbox_glob);
break;
case SEARCH_INTHREAD:
i_assert(arg->initialized.search_args->refcount > 0);
if (arg->value.search_result != NULL)
mailbox_search_result_free(&arg->value.search_result);
arg->initialized.search_args->refcount--;
arg->initialized.search_args->box = NULL;
/* fall through */
case SEARCH_SUB:
case SEARCH_OR:
mail_search_arg_deinit(arg->value.subargs);
break;
default:
break;
}
}

Expand Down
4 changes: 3 additions & 1 deletion src/lib-storage/mail-search.h
Expand Up @@ -168,8 +168,10 @@ void mail_search_arg_init(struct mail_search_args *args,
afterwards again if needed. The args can be reused for other queries after
calling this. */
void mail_search_args_deinit(struct mail_search_args *args);
/* Free arg and its children. */
/* Free arg and its siblings and children. */
void mail_search_arg_deinit(struct mail_search_arg *arg);
/* Free arg and its children, but not its siblings. */
void mail_search_arg_one_deinit(struct mail_search_arg *arg);
/* Convert sequence sets in args to UIDs. */
void mail_search_args_seq2uid(struct mail_search_args *args);
/* Returns TRUE if the two search arguments are fully compatible.
Expand Down

0 comments on commit 1db237d

Please sign in to comment.