]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-storage: Make sure mail_sesarch_args_simplify_sub() is called enough times.
authorTimo Sirainen <tss@iki.fi>
Sun, 6 Dec 2015 17:26:44 +0000 (19:26 +0200)
committerTimo Sirainen <tss@iki.fi>
Sun, 6 Dec 2015 17:26:44 +0000 (19:26 +0200)
src/lib-storage/mail-search-args-simplify.c

index 0a6ce1244eb887562c0bf8b86a17b764d91667ba..236254bef90bee89775d829bb5757455d701f2ea 100644 (file)
@@ -471,6 +471,7 @@ mail_search_args_simplify_sub(struct mailbox *box, pool_t pool,
                        for (; sub->next != NULL; sub = sub->next) ;
                        sub->next = args->next;
                        *args = *args->value.subargs;
+                       ctx.removals = TRUE;
                        continue;
                }
 
@@ -609,7 +610,8 @@ void mail_search_args_simplify(struct mail_search_args *args)
        if (mail_search_args_unnest_inthreads(args, &args->args,
                                              FALSE, TRUE)) {
                /* we may have added some extra SUBs that could be dropped */
-               mail_search_args_simplify_sub(args->box, args->pool, args->args, TRUE);
+               if (mail_search_args_simplify_sub(args->box, args->pool, args->args, TRUE))
+                       removals = TRUE;
        }
        while (removals)
                removals = mail_search_args_simplify_sub(args->box, args->pool, args->args, TRUE);