aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/projectexplorer/projecttree.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/plugins/projectexplorer/projecttree.cpp b/src/plugins/projectexplorer/projecttree.cpp
index 27344989c2..5e853e6a78 100644
--- a/src/plugins/projectexplorer/projecttree.cpp
+++ b/src/plugins/projectexplorer/projecttree.cpp
@@ -393,9 +393,15 @@ void ProjectTree::applyTreeManager(FolderNode *folder)
bool ProjectTree::hasNode(const Node *node)
{
return Utils::contains(SessionManager::projects(), [node](const Project *p) {
- return p && p->rootProjectNode() && (
- p->containerNode() == node
- || p->rootProjectNode()->findNode([node](const Node *n) { return n == node; }));
+ if (!p)
+ return false;
+ if (p->containerNode() == node)
+ return true;
+ // When parsing fails we have a living container node but no rootProjectNode.
+ ProjectNode *pn = p->rootProjectNode();
+ if (!pn)
+ return false;
+ return pn->findNode([node](const Node *n) { return n == node; }) != nullptr;
});
}