From: Timo Sirainen Date: Wed, 3 Jun 2015 19:39:52 +0000 (+0300) Subject: lib-fts: fts_tokenizer_reset() didn't reset the entire state. X-Git-Tag: 2.2.19.rc1~369 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=12952c18d10fa83be65059471139c2fdc8a00c3d;p=thirdparty%2Fdovecot%2Fcore.git lib-fts: fts_tokenizer_reset() didn't reset the entire state. --- diff --git a/src/lib-fts/fts-tokenizer.c b/src/lib-fts/fts-tokenizer.c index 1d038880e8..b68aabb4b4 100644 --- a/src/lib-fts/fts-tokenizer.c +++ b/src/lib-fts/fts-tokenizer.c @@ -66,6 +66,14 @@ const char *fts_tokenizer_name(const struct fts_tokenizer *tok) 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 @@ int fts_tokenizer_create(const struct fts_tokenizer *tok_class, 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 @@ fts_tokenizer_next_self(struct fts_tokenizer *tok, 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 @@ fts_tokenizer_next_self(struct fts_tokenizer *tok, 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,