[Bf-blender-cvs] [ca0dcd830c5] master: Fix T75222: Crash activating menu search

Campbell Barton noreply at git.blender.org
Wed Apr 1 12:00:52 CEST 2020


Commit: ca0dcd830c5e880b9ea25d4b95a581b2aaeef4e4
Author: Campbell Barton
Date:   Wed Apr 1 20:59:50 2020 +1100
Branches: master
https://developer.blender.org/rBca0dcd830c5e880b9ea25d4b95a581b2aaeef4e4

Fix T75222: Crash activating menu search

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

M	release/scripts/startup/bl_ui/space_topbar.py
M	source/blender/editors/interface/interface_templates.c

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

diff --git a/release/scripts/startup/bl_ui/space_topbar.py b/release/scripts/startup/bl_ui/space_topbar.py
index 40824cbeb52..1e6f03c2b0c 100644
--- a/release/scripts/startup/bl_ui/space_topbar.py
+++ b/release/scripts/startup/bl_ui/space_topbar.py
@@ -208,7 +208,7 @@ class TOPBAR_MT_editor_menus(Menu):
         layout = self.layout
 
         # Allow calling this menu directly (this might not be a header area).
-        if getattr(context.area, "show_menus"):
+        if getattr(context.area, "show_menus", False):
             layout.menu("TOPBAR_MT_app", text="", icon='BLENDER')
         else:
             layout.menu("TOPBAR_MT_app", text="Blender")
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index d7377a0e56e..c750187d7a3 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -6827,12 +6827,15 @@ static void menu_types_add_from_keymap_items(bContext *C,
 {
   wmWindowManager *wm = CTX_wm_manager(C);
   ListBase *handlers[] = {
-      &region->handlers,
-      &sa->handlers,
+      region ? &region->handlers : NULL,
+      sa ? &sa->handlers : NULL,
       &win->handlers,
   };
 
   for (int handler_index = 0; handler_index < ARRAY_SIZE(handlers); handler_index++) {
+    if (handlers[handler_index] == NULL) {
+      continue;
+    }
     LISTBASE_FOREACH (wmEventHandler *, handler_base, handlers[handler_index]) {
       /* During this loop, ui handlers for nested menus can tag multiple handlers free. */
       if (handler_base->flag & WM_HANDLER_DO_FREE) {
@@ -7092,11 +7095,15 @@ static struct MenuSearch_Data *menu_items_from_ui_create(bContext *C,
           menu_items_from_ui_create_item_from_button(data, memarena, mt, drawstr_submenu, sub_but);
         }
 
-        BLI_remlink(&region->uiblocks, sub_block);
+        if (region) {
+          BLI_remlink(&region->uiblocks, sub_block);
+        }
         UI_block_free(NULL, sub_block);
       }
     }
-    BLI_remlink(&region->uiblocks, block);
+    if (region) {
+      BLI_remlink(&region->uiblocks, block);
+    }
     UI_block_free(NULL, block);
 
     /* Add key-map items as a second pass,



More information about the Bf-blender-cvs mailing list