]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-fts: fts_tokenizer_reset() didn't reset the entire state.
authorTimo Sirainen <tss@iki.fi>
Wed, 3 Jun 2015 19:39:52 +0000 (22:39 +0300)
committerTimo Sirainen <tss@iki.fi>
Wed, 3 Jun 2015 19:39:52 +0000 (22:39 +0300)
src/lib-fts/fts-tokenizer.c

index 1d038880e8fd351ddfe27808eaa794375ae88532..b68aabb4b4fbf20d272649120f9739c3bcc47ed6 100644 (file)
@@ -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,