[Bf-blender-cvs] [a566b71333c] master: Fix crash closing stacked file browser window

Julian Eisel noreply at git.blender.org
Sun Sep 8 14:41:05 CEST 2019


Commit: a566b71333cf9352bc676bbf8df6922d99eeaa81
Author: Julian Eisel
Date:   Sat Sep 7 22:40:28 2019 +0200
Branches: master
https://developer.blender.org/rBa566b71333cf9352bc676bbf8df6922d99eeaa81

Fix crash closing stacked file browser window

Caused by ab823176d31dc1.
Steps to reproduce were:
* Open Preferences
* Open file browser through Lights -> Install (doesn't matter which)
* Close browser through the window controlls

The window was freed earlier, but still referenced by new handler
context storage.

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

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 ff22956e723..21c6c2ae60b 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -2384,7 +2384,13 @@ static int wm_handler_fileselect_do(bContext *C,
       /* remlink now, for load file case before removing*/
       BLI_remlink(handlers, handler);
 
-      if (val != EVT_FILESELECT_EXTERNAL_CANCEL) {
+      if (val == EVT_FILESELECT_EXTERNAL_CANCEL) {
+        /* The window might have been freed already. */
+        if (BLI_findindex(&wm->windows, handler->context.win) == -1) {
+          handler->context.win = NULL;
+        }
+      }
+      else {
         for (wmWindow *win = wm->windows.first; win; win = win->next) {
           if (WM_window_is_temp_screen(win)) {
             bScreen *screen = WM_window_get_active_screen(win);



More information about the Bf-blender-cvs mailing list