Mercurial > dovecot > core-2.2
changeset 13279:7d4e9c85ff2d
fts-lucene: Fixed memory leak in snowball analyzer.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 23 Aug 2011 04:44:03 +0300 |
parents | fa2425fd9cf4 |
children | 0e2b79d2be59 |
files | src/plugins/fts-lucene/Snowball.cc src/plugins/fts-lucene/SnowballAnalyzer.h |
diffstat | 2 files changed, 9 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/fts-lucene/Snowball.cc Tue Aug 23 03:31:50 2011 +0300 +++ b/src/plugins/fts-lucene/Snowball.cc Tue Aug 23 04:44:03 2011 +0300 @@ -29,9 +29,11 @@ SnowballAnalyzer::SnowballAnalyzer(const char* language) { this->language = strdup(language); stopSet = NULL; + prevstream = NULL; } SnowballAnalyzer::~SnowballAnalyzer(){ + if (prevstream) _CLDELETE(prevstream); _CLDELETE_CARRAY(language); if ( stopSet != NULL ) _CLDELETE(stopSet); @@ -69,6 +71,11 @@ return result; } + TokenStream* SnowballAnalyzer::reusableTokenStream(const TCHAR* fieldName, CL_NS(util)::Reader* reader) { + if (prevstream) _CLDELETE(prevstream); + prevstream = this->tokenStream(fieldName, reader); + return prevstream; + }
--- a/src/plugins/fts-lucene/SnowballAnalyzer.h Tue Aug 23 03:31:50 2011 +0300 +++ b/src/plugins/fts-lucene/SnowballAnalyzer.h Tue Aug 23 04:44:03 2011 +0300 @@ -22,6 +22,7 @@ class CLUCENE_CONTRIBS_EXPORT SnowballAnalyzer: public Analyzer { char* language; CLTCSetList* stopSet; + TokenStream *prevstream; public: /** Builds the named analyzer with no stop words. */ @@ -37,6 +38,7 @@ StandardFilter}, a {@link LowerCaseFilter} and a {@link StopFilter}. */ TokenStream* tokenStream(const TCHAR* fieldName, CL_NS(util)::Reader* reader); TokenStream* tokenStream(const TCHAR* fieldName, CL_NS(util)::Reader* reader, bool deleteReader); + TokenStream* reusableTokenStream(const TCHAR* fieldName, CL_NS(util)::Reader* reader); }; CL_NS_END2