From: hjk Date: Tue, 21 Dec 2010 11:30:17 +0000 (+0100) Subject: debugger: don't crash in gotoLocation() if no editor can be created X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=6b13434a45ec453366892558c249914bcaa23ece;p=qt-creator-jp%2Fqt-creator-jp.git debugger: don't crash in gotoLocation() if no editor can be created --- diff --git a/src/plugins/debugger/debuggerengine.cpp b/src/plugins/debugger/debuggerengine.cpp index 7160c735f1..9fd7b13010 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 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(editors.back()); + ITextEditor *texteditor = qobject_cast(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(); }