From 7e5d1a9560a5d926381f4aa864623845cdb8f1b2 Mon Sep 17 00:00:00 2001 From: Julian Eisel Date: Sat, 9 Mar 2019 12:56:56 +0100 Subject: Fix T57655: Crash opening 2.79 file saved with maximized area During screen to workspace/workspace-layout conversion, the first layout of each workspace would be activated. For temporary full-screens, this used to be the full-screen layout (IIRC), apparently it's now the the layout to return to on "Back to Previous". So the 'previous' layout would be activated, not the full-screen one. When actually pressing "Back to Previous" now, the operator would first free the active layout (which it assumes to be the temp full-screen - wrongly in this case) and then try to activate the non-full-screen one, causing use-after-free. --- source/blender/editors/screen/screen_edit.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source/blender/editors/screen/screen_edit.c') diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 7556a44da1a..502e5a92241 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1154,6 +1154,9 @@ ScrArea *ED_screen_state_toggle(bContext *C, wmWindow *win, ScrArea *sa, const s sc = sa->full; /* the old screen to restore */ oldscreen = WM_window_get_active_screen(win); /* the one disappearing */ + BLI_assert(BKE_workspace_layout_screen_get(layout_old) != sc); + BLI_assert(BKE_workspace_layout_screen_get(layout_old)->state != SCREENNORMAL); + sc->state = SCREENNORMAL; sc->flag = oldscreen->flag; -- cgit v1.2.3