From 243a6259618e69b8da9ac2438480c449754f7f77 Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Fri, 20 Sep 2013 17:53:49 +0300
Subject: [PATCH] EditorManager: Fix crash when closing an editor upon
 activation

* activateEditor receives a pointer to the editor.
* When currentEditorChanged is emitted (using a direct connection),
  closeEditor is called (because changes were reverted and the editor
  isn't needed anymore.
* closeEditor eventually deletes the editor
* Control is returned to activateEditor, which now references a deleted
  editor -> crash

Task-number: QTCREATORBUG-10190
Change-Id: I9062f03c1c1550f0a8c0c49c226dedcfd252eb12
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Reviewed-by: Petar Perisin <petar.perisin@gmail.com>
---
 src/plugins/coreplugin/editormanager/editormanager.cpp | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp
index e898895f39a..2f1cc62df80 100644
--- a/src/plugins/coreplugin/editormanager/editormanager.cpp
+++ b/src/plugins/coreplugin/editormanager/editormanager.cpp
@@ -1161,9 +1161,8 @@ bool EditorManager::closeEditors(const QList<IEditor*> &editorsToClose, bool ask
 
     emit editorsClosed(acceptedEditors);
 
-    foreach (IEditor *editor, acceptedEditors) {
-        delete editor;
-    }
+    foreach (IEditor *editor, acceptedEditors)
+        editor->deleteLater();
 
     if (currentView) {
         if (IEditor *editor = currentView->currentEditor())
-- 
GitLab