diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-03-31 17:58:15 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-03-31 18:01:02 +0300 |
commit | 7ee340c0b43c89c157264bb723b01dff5c6005b4 (patch) | |
tree | 9d0790c788e9ceb218730e670b437b781e84e7a5 /source/blender/editors/screen/screen_edit.c | |
parent | 79918e05773132ce1f96c90b555348229ddfcf73 (diff) |
Fix writing freed memory, exiting full view
Diffstat (limited to 'source/blender/editors/screen/screen_edit.c')
-rw-r--r-- | source/blender/editors/screen/screen_edit.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index aadfa9e6608..e1c414b0031 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1765,6 +1765,7 @@ void ED_screen_full_prevspace(bContext *C, ScrArea *sa) if (sa->flag & AREA_FLAG_STACKED_FULLSCREEN) { /* stacked fullscreen -> only go back to previous screen and don't toggle out of fullscreen */ ED_area_prevspace(C, sa); + sa->flag &= ~AREA_FLAG_TEMP_TYPE; } else { ED_screen_restore_temp_type(C, sa); @@ -1804,8 +1805,7 @@ void ED_screen_full_restore(bContext *C, ScrArea *sa) else { ED_screen_state_toggle(C, win, sa, state); } - - sa->flag &= ~AREA_FLAG_TEMP_TYPE; + /* warning: 'sa' may be freed */ } /* otherwise just tile the area again */ else { @@ -1813,7 +1813,11 @@ void ED_screen_full_restore(bContext *C, ScrArea *sa) } } -/* this function toggles: if area is maximized/full then the parent will be restored */ +/** + * this function toggles: if area is maximized/full then the parent will be restored + * + * \warning \a sa may be freed. + */ ScrArea *ED_screen_state_toggle(bContext *C, wmWindow *win, ScrArea *sa, const short state) { bScreen *sc, *oldscreen; |