From 37c98f89d6ee27d014f3d6ac29ccc0879f7ee856 Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Thu, 17 Sep 2009 08:59:35 +0200
Subject: [PATCH] debugger: fix crash in memory view when data arrives after
 view has been closed

---
 src/plugins/debugger/debuggeragents.cpp | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/plugins/debugger/debuggeragents.cpp b/src/plugins/debugger/debuggeragents.cpp
index ede60b4c7e0..cb6e358bc79 100644
--- a/src/plugins/debugger/debuggeragents.cpp
+++ b/src/plugins/debugger/debuggeragents.cpp
@@ -81,7 +81,8 @@ MemoryViewAgent::MemoryViewAgent(DebuggerManager *manager, const QString &addr)
 
 MemoryViewAgent::~MemoryViewAgent()
 {
-    m_editor->deleteLater();
+    if (m_editor)
+        m_editor->deleteLater();
 }
 
 void MemoryViewAgent::init(quint64 addr)
@@ -101,13 +102,15 @@ void MemoryViewAgent::init(quint64 addr)
 void MemoryViewAgent::fetchLazyData(quint64 block, bool sync)
 {
     Q_UNUSED(sync); // FIXME: needed support for incremental searching
-    m_engine->fetchMemory(this, BinBlockSize * block, BinBlockSize);
+    if (m_engine)
+        m_engine->fetchMemory(this, BinBlockSize * block, BinBlockSize);
 }
 
 void MemoryViewAgent::addLazyData(quint64 addr, const QByteArray &ba)
 {
-    QMetaObject::invokeMethod(m_editor->widget(), "addLazyData",
-        Q_ARG(quint64, addr / BinBlockSize), Q_ARG(QByteArray, ba));
+    if (m_editor && m_editor->widget())
+        QMetaObject::invokeMethod(m_editor->widget(), "addLazyData",
+            Q_ARG(quint64, addr / BinBlockSize), Q_ARG(QByteArray, ba));
 }
 
 
@@ -206,6 +209,9 @@ void DisassemblerViewAgent::setContents(const QString &contents)
     using namespace Core;
     using namespace TextEditor;
 
+    if (!d->editor)
+        return;
+
     QPlainTextEdit *plainTextEdit = 0;
     EditorManager *editorManager = EditorManager::instance();
     if (!d->editor) {
-- 
GitLab