diff --git a/src/plugins/debugger/debuggeragents.cpp b/src/plugins/debugger/debuggeragents.cpp
index ede60b4c7e0282e4e6e47e473e70100c8fbdca07..cb6e358bc791de024be2d4c2d3fdd6d05d2650c6 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) {