diff options
author | Campbell Barton <campbell@blender.org> | 2022-05-03 07:50:40 +0300 |
---|---|---|
committer | Campbell Barton <campbell@blender.org> | 2022-05-03 07:50:40 +0300 |
commit | 4ee8dfa8b30fbbb2d700e961f8c686199af39fe6 (patch) | |
tree | 229db72877c64b32a57eaa4e67efbfae47919ad9 /source/blender/windowmanager | |
parent | 8810d0cecdd5c192d0562c62490695d22ca684d5 (diff) |
Fix use after free error when exiting a temp screen
Regression in [0] caused by checking the screen after event handling.
[0]: d4bdf2192964f786520c774d1a2ee44617302bc1
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/intern/wm_event_system.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c index 87588c40b57..1c3f7ed3e7a 100644 --- a/source/blender/windowmanager/intern/wm_event_system.c +++ b/source/blender/windowmanager/intern/wm_event_system.c @@ -1301,8 +1301,14 @@ static wmOperator *wm_operator_create(wmWindowManager *wm, * This isn't very nice but needed to redraw gizmos which are hidden while tweaking, * See #WM_GIZMOGROUPTYPE_DELAY_REFRESH_FOR_TWEAK for details. */ -static void wm_region_tag_draw_on_gizmo_delay_refresh_for_tweak(wmWindow *win, bScreen *screen) +static void wm_region_tag_draw_on_gizmo_delay_refresh_for_tweak(wmWindow *win) { + + bScreen *screen = WM_window_get_active_screen(win); + /* Unlikely but not impossible as this runs after events have been handled. */ + if (UNLIKELY(screen == NULL)) { + return; + } ED_screen_areas_iter (win, screen, area) { LISTBASE_FOREACH (ARegion *, region, &area->regionbase) { if (region->gizmo_map != NULL) { @@ -3929,7 +3935,7 @@ void wm_event_do_handlers(bContext *C) } if (event_queue_check_drag_prev && (win->event_queue_check_drag == false)) { - wm_region_tag_draw_on_gizmo_delay_refresh_for_tweak(win, screen); + wm_region_tag_draw_on_gizmo_delay_refresh_for_tweak(win); } /* Update previous mouse position for following events to use. */ |