diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2012-11-04 21:20:53 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-08 15:11:51 +0100 |
commit | a4b5cd2893a5eef09d615340ae899f785de84858 (patch) | |
tree | da1eafaedd84bc5484e773b0f84815387d6435df /src | |
parent | deca010d62c94789ba856d048a00bf159cc9a444 (diff) | |
download | qt4-tools-a4b5cd2893a5eef09d615340ae899f785de84858.tar.gz |
Fix for memory leak in ResultStore
In ResultStoreBase::addResults() it possible that the ResultItem we
create is invalid (filter-mode enabled). Since an invalid ResultItem
won't have any result data, we need to make sure that we don't allocate
any data for it.
Backported (with minor technical changes) from qt/qtbase commit
6039179373f7552c2a711b06a7d69b9ca9d2b175
Original commit by Christian Strømme
Task-number: QTBUG-27224
Change-Id: I5c941363c211d0414d461e7b1b0274c80f3d69b9
Reviewed-by: Christian Stromme <christian.stromme@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/concurrent/qtconcurrentresultstore.h | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/corelib/concurrent/qtconcurrentresultstore.h b/src/corelib/concurrent/qtconcurrentresultstore.h index 72ae1a5083..fb0ae2c7ea 100644 --- a/src/corelib/concurrent/qtconcurrentresultstore.h +++ b/src/corelib/concurrent/qtconcurrentresultstore.h @@ -177,7 +177,10 @@ public: int addResults(int index, const QVector<T> *results, int totalCount) { - return ResultStoreBase::addResults(index, new QVector<T>(*results), results->count(), totalCount); + if (m_filterMode && totalCount && !results->count()) + return ResultStoreBase::addResults(index, 0, 0, totalCount); + else + return ResultStoreBase::addResults(index, new QVector<T>(*results), results->count(), totalCount); } int addCanceledResult(int index) |