]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: mail_search_args_simplify() - Fix merging already-initialized keywords
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 7 Jun 2017 16:53:00 +0000 (19:53 +0300)
committerVille Savolainen <ville.savolainen@dovecot.fi>
Wed, 14 Jun 2017 08:30:41 +0000 (11:30 +0300)
It was deinitializing the arg that was kept instead of the one being removed.

src/lib-storage/mail-search-args-simplify.c

index cc6a944bf444c3333c9d60ac82937cdc05c4f73c..7c28252806ecc889ba33dc083790b29e17af8b6c 100644 (file)
@@ -97,11 +97,14 @@ mail_search_args_merge_mask(struct mail_search_simplify_ctx *ctx,
                *prev_argp = args;
                return FALSE;
        }
+
        if (ctx->initialized)
-               mail_search_arg_one_deinit(*prev_argp);
+               mail_search_arg_one_deinit(args);
 
        if ((*prev_argp)->match_not != args->match_not) {
                /* a && !a = 0 */
+               if (ctx->initialized)
+                       mail_search_arg_one_deinit(*prev_argp);
                (*prev_argp)->type = SEARCH_ALL;
                (*prev_argp)->match_not = ctx->parent_and;
        }