From fdbee2783a76505a93a23d142f0199a85bb2f35c Mon Sep 17 00:00:00 2001
From: hjk <hjk@theqtcompany.com>
Date: Wed, 26 Aug 2015 10:52:04 +0200
Subject: [PATCH] QmlInspector: Fix crash on engine ramp down

Task-number: QTCREATORBUG-14972
Change-Id: Ia2a508fab872ac4496c2cb3fa932186e8e29278d
Reviewed-by: Ulf Hermann <ulf.hermann@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
---
 src/plugins/debugger/qml/qmlinspectoragent.cpp | 4 +++-
 src/plugins/debugger/qml/qmlinspectoragent.h   | 3 ++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/plugins/debugger/qml/qmlinspectoragent.cpp b/src/plugins/debugger/qml/qmlinspectoragent.cpp
index 64bd8cb0893..70d48f5b867 100644
--- a/src/plugins/debugger/qml/qmlinspectoragent.cpp
+++ b/src/plugins/debugger/qml/qmlinspectoragent.cpp
@@ -738,6 +738,7 @@ void QmlInspectorAgent::addWatchData(const ObjectReference &obj,
                                      bool append)
 {
     qCDebug(qmlInspectorLog) << '(' << obj << parentIname << ')';
+    QTC_ASSERT(m_debuggerEngine, return);
 
     int objDebugId = obj.debugId();
     QByteArray objIname = buildIName(parentIname, objDebugId);
@@ -831,7 +832,8 @@ bool QmlInspectorAgent::isConnected() const
 
 void QmlInspectorAgent::clearObjectTree()
 {
-    m_debuggerEngine->watchHandler()->removeAllData(true);
+    if (m_debuggerEngine)
+        m_debuggerEngine->watchHandler()->removeAllData(true);
     m_objectTreeQueryIds.clear();
     m_fetchDataIds.clear();
     int old_count = m_debugIdHash.count();
diff --git a/src/plugins/debugger/qml/qmlinspectoragent.h b/src/plugins/debugger/qml/qmlinspectoragent.h
index 4719ed2782a..979a9d35630 100644
--- a/src/plugins/debugger/qml/qmlinspectoragent.h
+++ b/src/plugins/debugger/qml/qmlinspectoragent.h
@@ -32,6 +32,7 @@
 #define QMLINSPECTORAGENT_H
 
 #include <QStack>
+#include <QPointer>
 #include <QTimer>
 
 #include <qmldebug/baseenginedebugclient.h>
@@ -126,7 +127,7 @@ private:
     void clearObjectTree();
 
 private:
-    DebuggerEngine *m_debuggerEngine;
+    QPointer<DebuggerEngine> m_debuggerEngine;
     QmlDebug::BaseEngineDebugClient *m_engineClient;
 
     quint32 m_engineQueryId;
-- 
GitLab