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.
console-destruction
Armin Burgmeier 2016-10-01 13:49:01 -10:00
parent 2d324c10e0
commit 4e7b396d31
1 changed files with 8 additions and 1 deletions

View File

@ -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;
}
}
}