Mercurial > dovecot > core-2.2
changeset 22199:83955bbf1b3a
lib-storage: Fix mail_search_args_simplify() to not deinit too many args
Removing an arg should deinit it, but not its following siblings.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Wed, 07 Jun 2017 19:37:46 +0300 |
parents | 5eee5c1e815e |
children | 171b3599cc0f |
files | src/lib-storage/mail-search-args-simplify.c |
diffstat | 1 files changed, 3 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/mail-search-args-simplify.c Wed Jun 07 19:36:19 2017 +0300 +++ b/src/lib-storage/mail-search-args-simplify.c Wed Jun 07 19:37:46 2017 +0300 @@ -98,7 +98,7 @@ return FALSE; } if (ctx->initialized) - mail_search_arg_deinit(*prev_argp); + mail_search_arg_one_deinit(*prev_argp); if ((*prev_argp)->match_not != args->match_not) { /* a && !a = 0 */ @@ -341,7 +341,7 @@ for (argp = argsp; (*argp) != NULL; ) { if (mail_search_arg_one_equals(*argp, wanted_arg)) { if (all_args->init_refcount > 0) - mail_search_arg_deinit(*argp); + mail_search_arg_one_deinit(*argp); *argp = (*argp)->next; found = TRUE; } else if (check_subs) { @@ -428,7 +428,7 @@ (*argp)->value.subargs != lowest_arg && mail_search_args_have_all_equal(*argp, lowest_arg)) { if (all_args->init_refcount > 0) - mail_search_arg_deinit(*argp); + mail_search_arg_one_deinit(*argp); *argp = (*argp)->next; ret = TRUE; } else {