From 6b13434a45ec453366892558c249914bcaa23ece Mon Sep 17 00:00:00 2001
From: hjk <qtc-committer@nokia.com>
Date: Tue, 21 Dec 2010 12:30:17 +0100
Subject: [PATCH] debugger: don't crash in gotoLocation() if no editor can be
 created

---
 src/plugins/debugger/debuggerengine.cpp | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp
index 7160c735f1f..9fd7b130109 100644
--- a/src/plugins/debugger/debuggerengine.cpp
+++ b/src/plugins/debugger/debuggerengine.cpp
@@ -536,12 +536,18 @@ void DebuggerEngine::gotoLocation(const Location &loc)
     const int line = loc.lineNumber();
     EditorManager *editorManager = EditorManager::instance();
     QList<IEditor *> editors = editorManager->editorsForFileName(file);
+    IEditor *editor = 0;
     if (editors.isEmpty()) {
-        editors.append(editorManager->openEditor(file, QString(),
-            EditorManager::IgnoreNavigationHistory));
-        editors.back()->setProperty(Constants::OPENED_BY_DEBUGGER, true);
+        editor = editorManager->openEditor(file, QString(),
+            EditorManager::IgnoreNavigationHistory);
+        if (editor) {
+            editors.append(editor);
+            editor->setProperty(Constants::OPENED_BY_DEBUGGER, true);
+        }
+    } else {
+        editor = editors.back();
     }
-    ITextEditor *texteditor = qobject_cast<ITextEditor *>(editors.back());
+    ITextEditor *texteditor = qobject_cast<ITextEditor *>(editor);
     if (texteditor)
         texteditor->gotoLine(line, 0);
 
@@ -550,7 +556,7 @@ void DebuggerEngine::gotoLocation(const Location &loc)
 
     // FIXME: Breaks with split views.
     if (!d->m_memoryAgent.hasVisibleEditor() || loc.needsRaise())
-        editorManager->activateEditor(editors.back());
+        editorManager->activateEditor(editor);
     //qDebug() << "MEMORY: " << d->m_memoryAgent.hasVisibleEditor();
 }
 
-- 
GitLab