Mercurial > dovecot > core-2.2
changeset 18825:576267a41570
lib-fts: fts_tokenizer_reset() didn't reset the entire state.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Wed, 03 Jun 2015 22:39:52 +0300 |
parents | 2f5799572a2f |
children | e222d1265e4e |
files | src/lib-fts/fts-tokenizer.c |
diffstat | 1 files changed, 11 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-fts/fts-tokenizer.c Wed Jun 03 22:30:05 2015 +0300 +++ b/src/lib-fts/fts-tokenizer.c Wed Jun 03 22:39:52 2015 +0300 @@ -66,6 +66,14 @@ return tok->name; } +static void fts_tokenizer_self_reset(struct fts_tokenizer *tok) +{ + tok->prev_data = NULL; + tok->prev_size = 0; + tok->prev_skip = 0; + tok->prev_reply_finished = TRUE; +} + int fts_tokenizer_create(const struct fts_tokenizer *tok_class, struct fts_tokenizer *parent, const char *const *settings, @@ -85,7 +93,7 @@ return -1; } tok->refcount = 1; - tok->prev_reply_finished = TRUE; + fts_tokenizer_self_reset(tok); if (parent != NULL) { fts_tokenizer_ref(parent); tok->parent = parent; @@ -150,10 +158,7 @@ tok->prev_reply_finished = FALSE; } else if (ret == 0) { /* we need a new data block */ - tok->prev_data = NULL; - tok->prev_size = 0; - tok->prev_skip = 0; - tok->prev_reply_finished = TRUE; + fts_tokenizer_self_reset(tok); } return ret; } @@ -161,6 +166,7 @@ void fts_tokenizer_reset(struct fts_tokenizer *tok) { tok->v->reset(tok); + fts_tokenizer_self_reset(tok); } int fts_tokenizer_next(struct fts_tokenizer *tok,