From 4e7b396d319956dd3d4e19e04165275da94ba92d Mon Sep 17 00:00:00 2001 From: Armin Burgmeier Date: Sat, 1 Oct 2016 13:49:01 -1000 Subject: [PATCH] editor: keep track of viewports properly When removing a viewport, then also remove it from the internal list of viewports. Otherwise, we might attempt to delete it again later. Fixes crash on editor shutdown on Linux. --- src/editor/C4ConsoleQtState.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/editor/C4ConsoleQtState.cpp b/src/editor/C4ConsoleQtState.cpp index a956bfdf1..8cdc10052 100644 --- a/src/editor/C4ConsoleQtState.cpp +++ b/src/editor/C4ConsoleQtState.cpp @@ -915,12 +915,19 @@ void C4ConsoleGUIState::AddViewport(C4ViewportWindow *cvp) void C4ConsoleGUIState::RemoveViewport(C4ViewportWindow *cvp) { if (!viewport_area) return; - for (auto vp : viewports) + + for (auto iter = viewports.begin(); iter != viewports.end(); ) { + auto vp = *iter; if (vp->GetViewportWindow() == cvp) { viewport_area->removeDockWidget(vp); vp->deleteLater(); + iter = viewports.erase(iter); + } + else + { + ++iter; } } }