From dfabd25e5dac95b44c0891c531aee87df987b76e Mon Sep 17 00:00:00 2001 From: Al Date: Fri, 17 Mar 2017 03:40:29 -0400 Subject: [PATCH] [phrases] set node data only when we're sure we have a correct match, otherwise the longer phrase may actually be matched --- src/trie_search.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/trie_search.c b/src/trie_search.c index 8e27503c..dddbec1b 100644 --- a/src/trie_search.c +++ b/src/trie_search.c @@ -101,7 +101,6 @@ bool trie_search_from_index(trie_t *self, char *text, uint32_t start_node_id, ph int32_t data_index = -1*node.base; trie_data_node_t data_node = self->data->a[data_index]; unsigned char *current_tail = self->tail->a + data_node.tail; - data = data_node.data; size_t tail_len = strlen((char *)current_tail); char *query_tail = (char *)(*ptr ? ptr + 1 : ptr); @@ -289,7 +288,6 @@ bool trie_search_tokens_from_index(trie_t *self, char *str, token_array *tokens, uint32_t data_index = -1*node.base; trie_data_node_t data_node = self->data->a[data_index]; uint32_t current_tail_pos = data_node.tail; - data = data_node.data; unsigned char *current_tail = self->tail->a + current_tail_pos; @@ -314,6 +312,7 @@ bool trie_search_tokens_from_index(trie_t *self, char *str, token_array *tokens, phrase_len = tail_search_result - phrase_start + 1; last_match_index = i = tail_search_result; last_state = SEARCH_STATE_MATCH; + data = data_node.data; } break;