Mercurial > dovecot > core-2.2
changeset 18630:13461d146be0
lib-fts: Added asserts to make sure we don't return empty tokens.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 11 May 2015 14:10:24 +0300 |
parents | 9c4d1e1e252f |
children | 103f64df4e77 |
files | src/lib-fts/fts-filter.c src/lib-fts/fts-tokenizer.c |
diffstat | 2 files changed, 9 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-fts/fts-filter.c Mon May 11 12:28:58 2015 +0300 +++ b/src/lib-fts/fts-filter.c Mon May 11 14:10:24 2015 +0300 @@ -105,7 +105,9 @@ if (ret <= 0) *token = NULL; - else + else { i_assert(*token != NULL); + i_assert((*token)[0] != '\0'); + } return ret; }
--- a/src/lib-fts/fts-tokenizer.c Mon May 11 12:28:58 2015 +0300 +++ b/src/lib-fts/fts-tokenizer.c Mon May 11 14:10:24 2015 +0300 @@ -173,7 +173,7 @@ case FTS_TOKENIZER_PARENT_STATE_ADD_DATA: ret = fts_tokenizer_next_self(tok, data, size, token_r, error_r); if (ret <= 0 || tok->parent == NULL || tok->skip_parents) - return ret; + break; buffer_set_used_size(tok->parent_input, 0); buffer_append(tok->parent_input, *token_r, strlen(*token_r)); tok->parent_state++; @@ -182,13 +182,13 @@ ret = fts_tokenizer_next(tok->parent, tok->parent_input->data, tok->parent_input->used, token_r, error_r); if (ret != 0) - return ret; + break; tok->parent_state++; /* fall through */ case FTS_TOKENIZER_PARENT_STATE_FINALIZE: ret = fts_tokenizer_next(tok->parent, NULL, 0, token_r, error_r); if (ret != 0) - return ret; + break; /* we're finished sending this token to parent tokenizer. see if our own tokenizer has more tokens available */ tok->parent_state = FTS_TOKENIZER_PARENT_STATE_ADD_DATA; @@ -196,6 +196,9 @@ default: i_unreached(); } + /* we must not be returning empty tokens */ + i_assert(ret <= 0 || (*token_r)[0] != '\0'); + return ret; } int fts_tokenizer_final(struct fts_tokenizer *tok, const char **token_r,