From 8161acac8bc747bde84eca488e88c2c802a6aa7f Mon Sep 17 00:00:00 2001
From: dt <qtc-committer@nokia.com>
Date: Fri, 5 Jun 2009 11:16:09 +0200
Subject: [PATCH] Fix crash introduced by actualy freeing memory.

Reviewed-By: con
---
 src/plugins/qt4projectmanager/qtversionmanager.cpp | 10 ++++------
 src/plugins/qt4projectmanager/qtversionmanager.h   |  3 ++-
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/src/plugins/qt4projectmanager/qtversionmanager.cpp b/src/plugins/qt4projectmanager/qtversionmanager.cpp
index 6f02f4ad0e1..340d7fa9479 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.cpp
+++ b/src/plugins/qt4projectmanager/qtversionmanager.cpp
@@ -385,8 +385,7 @@ QtVersion::QtVersion(const QString &name, const QString &path)
 
 QtVersion::~QtVersion()
 {
-    delete m_toolChain;
-    m_toolChain = 0;
+
 }
 
 QString QtVersion::name() const
@@ -853,7 +852,7 @@ void QtVersion::updateQMakeCXX() const
 ProjectExplorer::ToolChain *QtVersion::toolChain() const
 {
     updateToolChain();
-    return m_toolChain;
+    return m_toolChain.data();
 }
 
 void QtVersion::updateToolChain() const
@@ -893,11 +892,10 @@ void QtVersion::updateToolChain() const
         qDebug()<<"Qt Creator doesn't know about the system includes, nor the systems defines.";
     }
 
-    if (ProjectExplorer::ToolChain::equals(m_test, m_toolChain)) {
+    if (ProjectExplorer::ToolChain::equals(m_test, m_toolChain.data())) {
         delete m_test;
     } else {
-        delete m_toolChain;
-        m_toolChain = m_test;
+        m_toolChain =  QSharedPointer<ProjectExplorer::ToolChain>(m_test);
     }
 
     m_toolChainUpToDate = true;
diff --git a/src/plugins/qt4projectmanager/qtversionmanager.h b/src/plugins/qt4projectmanager/qtversionmanager.h
index d95147698c4..6b6e6e4f999 100644
--- a/src/plugins/qt4projectmanager/qtversionmanager.h
+++ b/src/plugins/qt4projectmanager/qtversionmanager.h
@@ -33,6 +33,7 @@
 #include <projectexplorer/environment.h>
 #include <projectexplorer/toolchain.h>
 
+#include <QtCore/QSharedPointer>
 #include <QtCore/QHash>
 
 namespace Qt4ProjectManager {
@@ -154,7 +155,7 @@ private:
     mutable QString m_qmakeCXX;
 
     mutable bool m_toolChainUpToDate;
-    mutable ProjectExplorer::ToolChain *m_toolChain;
+    mutable QSharedPointer<ProjectExplorer::ToolChain> m_toolChain;
 };
 
 class QtVersionManager : public QObject
-- 
GitLab