From c36582d2df34ed1da9bb04393b65124e37eee497 Mon Sep 17 00:00:00 2001 From: Ilya Lavrenov Date: Tue, 1 Sep 2015 16:17:18 +0300 Subject: [PATCH] fixed memory leak in flann index (cherry picked from commit 32d7c1950a562d038ff6f8b810ee46298a83fc39) --- modules/flann/src/miniflann.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/flann/src/miniflann.cpp b/modules/flann/src/miniflann.cpp index 5ce3e90..9bf5033 100644 --- a/modules/flann/src/miniflann.cpp +++ b/modules/flann/src/miniflann.cpp @@ -318,12 +318,14 @@ buildIndex_(void*& index, const Mat& wholedata, const Mat& data, const IndexPara ::cvflann::Matrix dataset((ElementType*)data.data, data.rows, data.cols); - IndexType* _index = NULL; - if( !index || getParam(params, "algorithm", FLANN_INDEX_LINEAR) != FLANN_INDEX_LSH) // currently, additional index support is the lsh algorithm only. + // currently, additional index support is the lsh algorithm only. + if( !index || getParam(params, "algorithm", FLANN_INDEX_LINEAR) != FLANN_INDEX_LSH) { - _index = new IndexType(dataset, get_params(params), dist); + Ptr _index = makePtr(dataset, get_params(params), dist); _index->buildIndex(); index = _index; + // HACK to prevent object destruction + _index.obj = NULL; } else // build additional lsh index { -- 2.7.4