dovecot-2.2: lib-fts: Snowball's sb_stemmer_stem() can only fail...
dovecot at dovecot.org
dovecot at dovecot.org
Sat May 9 08:35:41 UTC 2015
details: http://hg.dovecot.org/dovecot-2.2/rev/7de648f42bc0
changeset: 18561:7de648f42bc0
user: Timo Sirainen <tss at iki.fi>
date: Sat May 09 11:33:45 2015 +0300
description:
lib-fts: Snowball's sb_stemmer_stem() can only fail because it runs out of memory.
diffstat:
src/lib-fts/fts-filter-stemmer-snowball.c | 19 ++++++++++++-------
1 files changed, 12 insertions(+), 7 deletions(-)
diffs (36 lines):
diff -r b0a934361563 -r 7de648f42bc0 src/lib-fts/fts-filter-stemmer-snowball.c
--- a/src/lib-fts/fts-filter-stemmer-snowball.c Sat May 09 11:17:03 2015 +0300
+++ b/src/lib-fts/fts-filter-stemmer-snowball.c Sat May 09 11:33:45 2015 +0300
@@ -81,20 +81,25 @@
fts_filter_stemmer_snowball_filter(struct fts_filter *filter,
const char **token)
{
- const sb_symbol *base;
- int len;
struct fts_filter_stemmer_snowball *sp =
(struct fts_filter_stemmer_snowball *) filter;
+ const sb_symbol *base;
- if (sp->stemmer == NULL)
+ if (sp->stemmer == NULL) {
if (fts_filter_stemmer_snowball_create_stemmer(sp) < 0)
return -1;
+ }
base = sb_stemmer_stem(sp->stemmer, (const unsigned char *)*token, strlen(*token));
- len = sb_stemmer_length(sp->stemmer);
- *token = t_strdup_until(base, base + len);
-
- return *token != NULL? 1: -1;
+ if (base == NULL) {
+ /* the only reason why this could fail is because of
+ out of memory. */
+ i_fatal_status(FATAL_OUTOFMEM,
+ "sb_stemmer_stem(len=%"PRIuSIZE_T") failed: "
+ "Out of memory", strlen(*token));
+ }
+ *token = t_strndup(base, sb_stemmer_length(sp->stemmer));
+ return 1;
}
#else
More information about the dovecot-cvs
mailing list