diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2020-06-19 10:17:21 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2020-06-19 11:19:42 +0000 |
commit | b9413bcec7a2e4a4f1369f3895ac5be04b43b976 (patch) | |
tree | 52ba91474b08fde99d1ed24d8d7ee3d158d681e5 /src/plugins | |
parent | ae2cc246c357fb7d3f47bb9a82e45f1759a4d0af (diff) |
Cpp: Fix leaks in ClangCodeModel tests
Change-Id: I19d4dc445d82fd24361f1eb752d9f35ccadd3efb
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/clangcodemodel/test/clangautomationutils.cpp | 10 | ||||
-rw-r--r-- | src/plugins/cpptools/cppmodelmanager.cpp | 2 |
2 files changed, 7 insertions, 5 deletions
diff --git a/src/plugins/clangcodemodel/test/clangautomationutils.cpp b/src/plugins/clangcodemodel/test/clangautomationutils.cpp index bd2e99b8b1..269b29acd4 100644 --- a/src/plugins/clangcodemodel/test/clangautomationutils.cpp +++ b/src/plugins/clangcodemodel/test/clangautomationutils.cpp @@ -41,6 +41,7 @@ #include <QCoreApplication> #include <QElapsedTimer> +#include <QScopedPointer> namespace ClangCodeModel { namespace Internal { @@ -69,7 +70,6 @@ public: // Are there any immediate results? if (TextEditor::IAssistProposal *proposal = processor->perform(assistInterface)) { - delete processor; proposalModel = proposal->model(); delete proposal; QTC_ASSERT(proposalModel, return GotInvalidResults); @@ -80,8 +80,10 @@ public: QElapsedTimer timer; timer.start(); while (!gotResults) { - if (timer.elapsed() >= timeoutInMs) + if (timer.elapsed() >= timeoutInMs) { + processor->cancel(); return Timeout; + } QCoreApplication::processEvents(); } @@ -124,11 +126,11 @@ TextEditor::ProposalModelPtr completionResults(TextEditor::BaseTextEditor *textE QTC_ASSERT(assistProvider->runType() == IAssistProvider::Asynchronous, return TextEditor::ProposalModelPtr()); - IAssistProcessor *processor = assistProvider->createProcessor(); + QScopedPointer<IAssistProcessor> processor(assistProvider->createProcessor()); QTC_ASSERT(processor, return TextEditor::ProposalModelPtr()); WaitForAsyncCompletions waitForCompletions; - const WaitForAsyncCompletions::WaitResult result = waitForCompletions.wait(processor, + const WaitForAsyncCompletions::WaitResult result = waitForCompletions.wait(processor.data(), assistInterface, timeOutInMs); QTC_ASSERT(result == WaitForAsyncCompletions::GotResults, diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index a4523a6065..fe251aa183 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -975,7 +975,7 @@ void CppModelManager::watchForCanceledProjectIndexer(const QVector<QFuture<void> if (future.isCanceled() || future.isFinished()) continue; - auto watcher = new QFutureWatcher<void>(); + auto watcher = new QFutureWatcher<void>(this); connect(watcher, &QFutureWatcher<void>::canceled, this, [this, project, watcher]() { if (d->m_projectToIndexerCanceled.contains(project)) // Project not yet removed d->m_projectToIndexerCanceled.insert(project, true); |