forked from qt-creator/qt-creator
Cpp: Fix leaks in ClangCodeModel tests
Change-Id: I19d4dc445d82fd24361f1eb752d9f35ccadd3efb Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -41,6 +41,7 @@
|
|||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QElapsedTimer>
|
#include <QElapsedTimer>
|
||||||
|
#include <QScopedPointer>
|
||||||
|
|
||||||
namespace ClangCodeModel {
|
namespace ClangCodeModel {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
@@ -69,7 +70,6 @@ public:
|
|||||||
|
|
||||||
// Are there any immediate results?
|
// Are there any immediate results?
|
||||||
if (TextEditor::IAssistProposal *proposal = processor->perform(assistInterface)) {
|
if (TextEditor::IAssistProposal *proposal = processor->perform(assistInterface)) {
|
||||||
delete processor;
|
|
||||||
proposalModel = proposal->model();
|
proposalModel = proposal->model();
|
||||||
delete proposal;
|
delete proposal;
|
||||||
QTC_ASSERT(proposalModel, return GotInvalidResults);
|
QTC_ASSERT(proposalModel, return GotInvalidResults);
|
||||||
@@ -80,8 +80,10 @@ public:
|
|||||||
QElapsedTimer timer;
|
QElapsedTimer timer;
|
||||||
timer.start();
|
timer.start();
|
||||||
while (!gotResults) {
|
while (!gotResults) {
|
||||||
if (timer.elapsed() >= timeoutInMs)
|
if (timer.elapsed() >= timeoutInMs) {
|
||||||
|
processor->cancel();
|
||||||
return Timeout;
|
return Timeout;
|
||||||
|
}
|
||||||
QCoreApplication::processEvents();
|
QCoreApplication::processEvents();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,11 +126,11 @@ TextEditor::ProposalModelPtr completionResults(TextEditor::BaseTextEditor *textE
|
|||||||
QTC_ASSERT(assistProvider->runType() == IAssistProvider::Asynchronous,
|
QTC_ASSERT(assistProvider->runType() == IAssistProvider::Asynchronous,
|
||||||
return TextEditor::ProposalModelPtr());
|
return TextEditor::ProposalModelPtr());
|
||||||
|
|
||||||
IAssistProcessor *processor = assistProvider->createProcessor();
|
QScopedPointer<IAssistProcessor> processor(assistProvider->createProcessor());
|
||||||
QTC_ASSERT(processor, return TextEditor::ProposalModelPtr());
|
QTC_ASSERT(processor, return TextEditor::ProposalModelPtr());
|
||||||
|
|
||||||
WaitForAsyncCompletions waitForCompletions;
|
WaitForAsyncCompletions waitForCompletions;
|
||||||
const WaitForAsyncCompletions::WaitResult result = waitForCompletions.wait(processor,
|
const WaitForAsyncCompletions::WaitResult result = waitForCompletions.wait(processor.data(),
|
||||||
assistInterface,
|
assistInterface,
|
||||||
timeOutInMs);
|
timeOutInMs);
|
||||||
QTC_ASSERT(result == WaitForAsyncCompletions::GotResults,
|
QTC_ASSERT(result == WaitForAsyncCompletions::GotResults,
|
||||||
|
|||||||
@@ -975,7 +975,7 @@ void CppModelManager::watchForCanceledProjectIndexer(const QVector<QFuture<void>
|
|||||||
if (future.isCanceled() || future.isFinished())
|
if (future.isCanceled() || future.isFinished())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
auto watcher = new QFutureWatcher<void>();
|
auto watcher = new QFutureWatcher<void>(this);
|
||||||
connect(watcher, &QFutureWatcher<void>::canceled, this, [this, project, watcher]() {
|
connect(watcher, &QFutureWatcher<void>::canceled, this, [this, project, watcher]() {
|
||||||
if (d->m_projectToIndexerCanceled.contains(project)) // Project not yet removed
|
if (d->m_projectToIndexerCanceled.contains(project)) // Project not yet removed
|
||||||
d->m_projectToIndexerCanceled.insert(project, true);
|
d->m_projectToIndexerCanceled.insert(project, true);
|
||||||
|
|||||||
Reference in New Issue
Block a user