[Bf-blender-cvs] [4ee8dfa8b30] blender-v3.2-release: Fix use after free error when exiting a temp screen

Campbell Barton noreply at git.blender.org
Tue May 3 06:58:00 CEST 2022


Commit: 4ee8dfa8b30fbbb2d700e961f8c686199af39fe6
Author: Campbell Barton
Date:   Tue May 3 14:50:40 2022 +1000
Branches: blender-v3.2-release
https://developer.blender.org/rB4ee8dfa8b30fbbb2d700e961f8c686199af39fe6

Fix use after free error when exiting a temp screen

Regression in [0] caused by checking the screen after event handling.

[0]: d4bdf2192964f786520c774d1a2ee44617302bc1

===================================================================

M	source/blender/windowmanager/intern/wm_event_system.c

===================================================================

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. */



More information about the Bf-blender-cvs mailing list