diff --git a/src/plugins/projectexplorer/projectnodes.cpp b/src/plugins/projectexplorer/projectnodes.cpp index 6284c33d058..b2fc067de8c 100644 --- a/src/plugins/projectexplorer/projectnodes.cpp +++ b/src/plugins/projectexplorer/projectnodes.cpp @@ -604,6 +604,7 @@ bool FolderNode::isAncesterOf(Node *n) bool FolderNode::replaceSubtree(Node *oldNode, std::unique_ptr &&newNode) { + std::unique_ptr keepAlive; if (!oldNode) { addNode(std::move(newNode)); // Happens e.g. when a project is registered } else { @@ -614,9 +615,10 @@ bool FolderNode::replaceSubtree(Node *oldNode, std::unique_ptr &&newNode) QTC_ASSERT(it != m_nodes.end(), return false); if (newNode) { newNode->setParentFolderNode(this); + keepAlive = std::move(*it); *it = std::move(newNode); } else { - takeNode(oldNode); // Happens e.g. when project is shutting down + keepAlive = takeNode(oldNode); // Happens e.g. when project is shutting down } } handleSubTreeChanged(this);