From: Timo Sirainen Date: Thu, 18 Oct 2018 09:35:22 +0000 (+0300) Subject: fts: Fix search query generation when one language ignores a token X-Git-Tag: 2.3.9~1172 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=46378555fe15a42b856af09bbb01ee69fb12d433;p=thirdparty%2Fdovecot%2Fcore.git fts: Fix search query generation when one language ignores a token The search query was changed to "NOT ALL", even though other languages used the token. --- diff --git a/src/plugins/fts/fts-search-args.c b/src/plugins/fts/fts-search-args.c index 3dfdb4ef25..3d7b68d8bc 100644 --- a/src/plugins/fts/fts-search-args.c +++ b/src/plugins/fts/fts-search-args.c @@ -104,7 +104,7 @@ fts_backend_dovecot_tokenize_lang(struct fts_user_language *user_lang, const char *orig_token, const char **error_r) { size_t orig_token_len = strlen(orig_token); - struct mail_search_arg *and_arg; + struct mail_search_arg *and_arg, *orig_or_args = or_arg->value.subargs; const char *token, *error; int ret; @@ -113,7 +113,7 @@ fts_backend_dovecot_tokenize_lang(struct fts_user_language *user_lang, it */ and_arg = p_new(pool, struct mail_search_arg, 1); and_arg->type = SEARCH_SUB; - and_arg->next = or_arg->value.subargs; + and_arg->next = orig_or_args; or_arg->value.subargs = and_arg; /* reset tokenizer between search args in case there's any state left @@ -140,7 +140,7 @@ fts_backend_dovecot_tokenize_lang(struct fts_user_language *user_lang, } if (and_arg->value.subargs == NULL) { /* nothing was actually expanded, remove the empty and_arg */ - or_arg->value.subargs = NULL; + or_arg->value.subargs = orig_or_args; } return 0; }