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,