[Bf-blender-cvs] [ecf20e7a562] blender2.8: Fix crash accessing enums without a context

Campbell Barton noreply at git.blender.org
Wed Oct 18 10:44:22 CEST 2017


Commit: ecf20e7a5629f194abe77d9b82c8dc73f06a160f
Author: Campbell Barton
Date:   Wed Oct 18 19:46:39 2017 +1100
Branches: blender2.8
https://developer.blender.org/rBecf20e7a5629f194abe77d9b82c8dc73f06a160f

Fix crash accessing enums without a context

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

M	source/blender/editors/object/object_data_transfer.c
M	source/blender/windowmanager/intern/wm_window.c

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

diff --git a/source/blender/editors/object/object_data_transfer.c b/source/blender/editors/object/object_data_transfer.c
index 26af20ccf40..acb17aa382c 100644
--- a/source/blender/editors/object/object_data_transfer.c
+++ b/source/blender/editors/object/object_data_transfer.c
@@ -97,15 +97,14 @@ static const EnumPropertyItem *dt_layers_select_src_itemf(
 	EvaluationContext eval_ctx;
 	EnumPropertyItem *item = NULL, tmp_item = {0};
 	int totitem = 0;
-
-	CTX_data_eval_ctx(C, &eval_ctx);
-
 	const int data_type = RNA_enum_get(ptr, "data_type");
 
 	if (!C) {  /* needed for docs and i18n tools */
 		return rna_enum_dt_layers_select_src_items;
 	}
 
+	CTX_data_eval_ctx(C, &eval_ctx);
+
 	RNA_enum_items_add_value(&item, &totitem, rna_enum_dt_layers_select_src_items, DT_LAYERS_ACTIVE_SRC);
 	RNA_enum_items_add_value(&item, &totitem, rna_enum_dt_layers_select_src_items, DT_LAYERS_ALL_SRC);
 
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 2ad90537cde..fef65d3dfc2 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -59,9 +59,9 @@
 #include "BKE_screen.h"
 #include "BKE_workspace.h"
 
-
 #include "RNA_access.h"
 #include "RNA_define.h"
+#include "RNA_enum_types.h"
 
 #include "WM_api.h"
 #include "WM_types.h"
@@ -883,6 +883,9 @@ int wm_window_new_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(even
 const EnumPropertyItem *wm_window_new_screen_itemf(
         bContext *C, struct PointerRNA *UNUSED(ptr), struct PropertyRNA *UNUSED(prop), bool *r_free)
 {
+	if (C == NULL) {
+		return DummyRNA_NULL_items;
+	}
 	wmWindow *win = CTX_wm_window(C);
 	WorkSpace *workspace = WM_window_get_active_workspace(win);
 	ListBase *listbase = BKE_workspace_layouts_get(workspace);



More information about the Bf-blender-cvs mailing list