[Bf-blender-cvs] [870440dee91] blender2.8: Prevent crash when seeing the window new on keymaps

Dalai Felinto noreply at git.blender.org
Wed Mar 29 11:39:40 CEST 2017


Commit: 870440dee910c908e213e5e2638ed2e0d0f010ae
Author: Dalai Felinto
Date:   Wed Mar 29 11:29:40 2017 +0200
Branches: blender2.8
https://developer.blender.org/rB870440dee910c908e213e5e2638ed2e0d0f010ae

Prevent crash when seeing the window new on keymaps

CTX_data_main(C) is NULL in those cases :/

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

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

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

diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 151c21d3cdd..69da8fd591b 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -817,23 +817,25 @@ struct EnumPropertyItem *wm_window_new_screen_itemf(
 	 * for dynamic strings in EnumPropertyItem.name to avoid this. */
 	static char active_screens[20][MAX_NAME + 12];
 
-	for (bScreen *screen = bmain->screen.first; screen; screen = screen->id.next) {
-		if (screen->winid) {
-			BLI_snprintf(active_screens[count_act_screens], sizeof(*active_screens), "%s (Duplicate)",
-			             screen->id.name + 2);
-			tmp.name = active_screens[count_act_screens++];
-		}
-		else {
-			tmp.name = screen->id.name + 2;
-		}
+	if (bmain) {
+		for (bScreen *screen = bmain->screen.first; screen; screen = screen->id.next) {
+			if (screen->winid) {
+				BLI_snprintf(active_screens[count_act_screens], sizeof(*active_screens), "%s (Duplicate)",
+				             screen->id.name + 2);
+				tmp.name = active_screens[count_act_screens++];
+			}
+			else {
+				tmp.name = screen->id.name + 2;
+			}
 
-		tmp.value = value;
-		tmp.identifier = screen->id.name;
-		UI_id_icon_render(C, CTX_data_scene(C), &screen->id, true, false);
-		tmp.icon = BKE_icon_id_ensure(&screen->id);
+			tmp.value = value;
+			tmp.identifier = screen->id.name;
+			UI_id_icon_render(C, CTX_data_scene(C), &screen->id, true, false);
+			tmp.icon = BKE_icon_id_ensure(&screen->id);
 
-		RNA_enum_item_add(&item, &totitem, &tmp);
-		value++;
+			RNA_enum_item_add(&item, &totitem, &tmp);
+			value++;
+		}
 	}
 
 	RNA_enum_item_end(&item, &totitem);




More information about the Bf-blender-cvs mailing list