From 530fc225fa291b7f5f047516de72a65dec4a31d1 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Wed, 14 Mar 2018 15:21:51 +0100 Subject: [PATCH] Project: Use std::unique_ptr for root project node Change-Id: Ice101fa57c5ee09a58dc6c99f6716fa4919ade59 Reviewed-by: Eike Ziller --- src/plugins/projectexplorer/project.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/plugins/projectexplorer/project.cpp b/src/plugins/projectexplorer/project.cpp index 4a40420b87a..5b085b866b3 100644 --- a/src/plugins/projectexplorer/project.cpp +++ b/src/plugins/projectexplorer/project.cpp @@ -162,7 +162,7 @@ public: bool m_isParsing = false; bool m_hasParsingData = false; std::unique_ptr m_document; - ProjectNode *m_rootProjectNode = nullptr; + std::unique_ptr m_rootProjectNode; std::unique_ptr m_containerNode; QList m_targets; Target *m_activeTarget = nullptr; @@ -184,10 +184,8 @@ ProjectPrivate::~ProjectPrivate() { qDeleteAll(m_targets); - // Make sure our root node is null when deleting - ProjectNode *oldNode = m_rootProjectNode; - m_rootProjectNode = nullptr; - delete oldNode; + // Make sure our root node is null when deleting the actual node + std::unique_ptr oldNode = std::move(m_rootProjectNode); } Project::Project(const QString &mimeType, const Utils::FileName &fileName, @@ -508,7 +506,7 @@ void Project::setId(Core::Id id) void Project::setRootProjectNode(ProjectNode *root) { - if (d->m_rootProjectNode == root) + if (d->m_rootProjectNode.get() == root) return; if (root && root->nodes().isEmpty()) { @@ -524,13 +522,11 @@ void Project::setRootProjectNode(ProjectNode *root) root->setParentFolderNode(d->m_containerNode.get()); } - ProjectNode *oldNode = d->m_rootProjectNode; + std::unique_ptr oldNode = std::move(d->m_rootProjectNode); - d->m_rootProjectNode = root; + d->m_rootProjectNode.reset(root); if (oldNode || root) handleSubTreeChanged(d->m_containerNode.get()); - - delete oldNode; } void Project::handleSubTreeChanged(FolderNode *node) @@ -670,7 +666,7 @@ Utils::FileName Project::projectDirectory(const Utils::FileName &top) ProjectNode *Project::rootProjectNode() const { - return d->m_rootProjectNode; + return d->m_rootProjectNode.get(); } ContainerNode *Project::containerNode() const