diff --git a/src/plugins/coreplugin/editormanager/editorgroup.cpp b/src/plugins/coreplugin/editormanager/editorgroup.cpp
index c146a09f25696acb452b77c45a0d7b318e9e32f2..2e33f810e036ce173aaef86b2e038c1e38523068 100644
--- a/src/plugins/coreplugin/editormanager/editorgroup.cpp
+++ b/src/plugins/coreplugin/editormanager/editorgroup.cpp
@@ -268,16 +268,14 @@ bool EditorGroup::restoreState(const QByteArray &state)
     EditorManager *em = EditorManager::instance();
     EditorList editors;
     in >> editors;
-    IEditor *currentEditor = 0;
-    IEditor *editor;
     int savedIndex = editors.currentEditorIndex;
+    if (savedIndex >= 0 && savedIndex < editors.count())
+        em->restoreEditor(editors.fileNameAt(savedIndex), editors.editorKindAt(savedIndex), this);
     for (int j = 0; j < editors.count(); ++j) {
-        editor = em->restoreEditor(editors.fileNameAt(j), editors.editorKindAt(j), this);
         if (j == savedIndex)
-            currentEditor = editor;
+            continue;
+        em->restoreEditor(editors.fileNameAt(j), editors.editorKindAt(j), this);
     }
-    if (currentEditor)
-        setCurrentEditor(currentEditor);
     return true;
 }