diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2013-09-20 17:53:49 +0300 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2013-09-21 19:05:41 +0200 |
commit | 243a6259618e69b8da9ac2438480c449754f7f77 (patch) | |
tree | d00af8b80afcd3a67903864ebcebdb091463031f | |
parent | 8b7dff6fdc1999ec547b009d97fcbb15140770f9 (diff) | |
download | qt-creator-243a6259618e69b8da9ac2438480c449754f7f77.tar.gz |
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>
-rw-r--r-- | src/plugins/coreplugin/editormanager/editormanager.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index e898895f39..2f1cc62df8 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()) |