summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppelementevaluator.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cppelementevaluator.cpp')
-rw-r--r--src/plugins/cpptools/cppelementevaluator.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/plugins/cpptools/cppelementevaluator.cpp b/src/plugins/cpptools/cppelementevaluator.cpp
index 208f75433d..0e739ddeab 100644
--- a/src/plugins/cpptools/cppelementevaluator.cpp
+++ b/src/plugins/cpptools/cppelementevaluator.cpp
@@ -214,6 +214,8 @@ void CppClass::lookupDerived(QFutureInterfaceBase &futureInterface,
using Data = QPair<CppClass*, CppTools::TypeHierarchy>;
snapshot.updateDependencyTable(futureInterface);
+ if (futureInterface.isCanceled())
+ return;
CppTools::TypeHierarchyBuilder builder(declaration, snapshot);
const CppTools::TypeHierarchy &completeHierarchy = builder.buildDerivedTypeHierarchy(futureInterface);
@@ -531,7 +533,7 @@ static void handleLookupItemMatch(QFutureInterface<QSharedPointer<CppElement>> &
if (futureInterface.isCanceled())
return;
- auto cppClass = new CppClass(declaration);
+ QSharedPointer<CppClass> cppClass(new CppClass(declaration));
if (lookupBaseClasses)
cppClass->lookupBases(futureInterface, declaration, contextToUse);
if (futureInterface.isCanceled())
@@ -540,7 +542,7 @@ static void handleLookupItemMatch(QFutureInterface<QSharedPointer<CppElement>> &
cppClass->lookupDerived(futureInterface, declaration, snapshot);
if (futureInterface.isCanceled())
return;
- element = QSharedPointer<CppElement>(cppClass);
+ element = cppClass;
} else if (Enum *enumDecl = declaration->asEnum()) {
element = QSharedPointer<CppElement>(new CppEnum(enumDecl));
} else if (auto enumerator = dynamic_cast<EnumeratorDeclaration *>(declaration)) {