From: Timo Sirainen Date: Sun, 6 Dec 2015 17:26:44 +0000 (+0200) Subject: lib-storage: Make sure mail_sesarch_args_simplify_sub() is called enough times. X-Git-Tag: 2.2.20~7 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c89ceadf661bde22e1cd9dc2eac09c19202e65ec;p=thirdparty%2Fdovecot%2Fcore.git lib-storage: Make sure mail_sesarch_args_simplify_sub() is called enough times. --- diff --git a/src/lib-storage/mail-search-args-simplify.c b/src/lib-storage/mail-search-args-simplify.c index 0a6ce1244e..236254bef9 100644 --- a/src/lib-storage/mail-search-args-simplify.c +++ b/src/lib-storage/mail-search-args-simplify.c @@ -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);