changeset 22200:171b3599cc0f

lib-storage: mail_search_args_simplify() - Fix merging already-initialized keywords It was deinitializing the arg that was kept instead of the one being removed.
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Wed, 07 Jun 2017 19:53:00 +0300
parents 83955bbf1b3a
children 1411caa97648
files src/lib-storage/mail-search-args-simplify.c
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/mail-search-args-simplify.c	Wed Jun 07 19:37:46 2017 +0300
+++ b/src/lib-storage/mail-search-args-simplify.c	Wed Jun 07 19:53:00 2017 +0300
@@ -97,11 +97,14 @@
 		*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;
 	}