From 25dd94808d0fee8ea3aa949d4d9ae17cac5ffd6c Mon Sep 17 00:00:00 2001
From: Christiaan Janssen <christiaan.janssen@digia.com>
Date: Mon, 3 Jun 2013 13:47:04 +0200
Subject: [PATCH] QmlProfiler: fix dangling pointer in Engine

Task-number: QTCREATORBUG-9391

Change-Id: Ib2ea66bd5694046577a0b5a0e2f611f3ffba0238
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
---
 src/plugins/qmlprofiler/qmlprofilerengine.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/plugins/qmlprofiler/qmlprofilerengine.cpp b/src/plugins/qmlprofiler/qmlprofilerengine.cpp
index 6914286dc66..f5800869f43 100644
--- a/src/plugins/qmlprofiler/qmlprofilerengine.cpp
+++ b/src/plugins/qmlprofiler/qmlprofilerengine.cpp
@@ -61,7 +61,7 @@ class QmlProfilerEngine::QmlProfilerEnginePrivate
 {
 public:
     QmlProfilerEnginePrivate(QmlProfilerEngine *qq) : q(qq), m_runner(0) {}
-    ~QmlProfilerEnginePrivate() { delete m_runner; }
+    ~QmlProfilerEnginePrivate() { m_runner->disconnect(); delete m_runner; }
 
     bool attach(const QString &address, uint port);
     static AbstractQmlProfilerRunner *createRunner(ProjectExplorer::RunConfiguration *runConfiguration,
@@ -153,6 +153,7 @@ bool QmlProfilerEngine::start()
     QTC_ASSERT(d->m_profilerState, return false);
 
     if (d->m_runner) {
+        d->m_runner->disconnect();
         delete d->m_runner;
         d->m_runner = 0;
     }
@@ -364,6 +365,7 @@ void QmlProfilerEngine::profilerStateChanged()
         // (a new one will be created at start)
         d->m_noDebugOutputTimer.stop();
         if (d->m_runner) {
+            d->m_runner->disconnect();
             delete d->m_runner;
             d->m_runner = 0;
         }
-- 
GitLab