# HG changeset patch # User Timo Sirainen # Date 1314063843 -10800 # Node ID 7d4e9c85ff2db0395a93dcbfc64158849dcd566c # Parent fa2425fd9cf4961c89dd4ebac95bca22afd185db fts-lucene: Fixed memory leak in snowball analyzer. diff -r fa2425fd9cf4 -r 7d4e9c85ff2d src/plugins/fts-lucene/Snowball.cc --- 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; + } diff -r fa2425fd9cf4 -r 7d4e9c85ff2d src/plugins/fts-lucene/SnowballAnalyzer.h --- 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