dovecot-2.2: lib-fts: Added asserts to make sure we don't return...

dovecot at dovecot.org dovecot at dovecot.org
Mon May 11 11:12:20 UTC 2015


details:   http://hg.dovecot.org/dovecot-2.2/rev/13461d146be0
changeset: 18630:13461d146be0
user:      Timo Sirainen <tss at iki.fi>
date:      Mon May 11 14:10:24 2015 +0300
description:
lib-fts: Added asserts to make sure we don't return empty tokens.

diffstat:

 src/lib-fts/fts-filter.c    |  4 +++-
 src/lib-fts/fts-tokenizer.c |  9 ++++++---
 2 files changed, 9 insertions(+), 4 deletions(-)

diffs (52 lines):

diff -r 9c4d1e1e252f -r 13461d146be0 src/lib-fts/fts-filter.c
--- 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;
 }
diff -r 9c4d1e1e252f -r 13461d146be0 src/lib-fts/fts-tokenizer.c
--- 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,


More information about the dovecot-cvs mailing list