[Bf-blender-cvs] [2c10e8a3cff] master: Fix T51052: CacheFile Open crashes from Python

Campbell Barton noreply at git.blender.org
Mon Jul 10 09:28:56 CEST 2017


Commit: 2c10e8a3cfff3cc3c12b0359bbfc11c0a7eadecc
Author: Campbell Barton
Date:   Mon Jul 10 17:06:25 2017 +1000
Branches: master
https://developer.blender.org/rB2c10e8a3cfff3cc3c12b0359bbfc11c0a7eadecc

Fix T51052: CacheFile Open crashes from Python

Note that bpy.data access makes more sense here,
but better not crash when called from Python.

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

M	source/blender/editors/io/io_cache.c

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

diff --git a/source/blender/editors/io/io_cache.c b/source/blender/editors/io/io_cache.c
index af6f55d7a64..a5e90ebbe7a 100644
--- a/source/blender/editors/io/io_cache.c
+++ b/source/blender/editors/io/io_cache.c
@@ -97,22 +97,24 @@ static int cachefile_open_exec(bContext *C, wmOperator *op)
 	BLI_strncpy(cache_file->filepath, filename, FILE_MAX);
 	BKE_cachefile_reload(bmain, cache_file);
 
-	/* hook into UI */
-	PropertyPointerRNA *pprop = op->customdata;
-
-	if (pprop->prop) {
-		/* when creating new ID blocks, use is already 1, but RNA
-		 * pointer se also increases user, so this compensates it */
-		id_us_min(&cache_file->id);
-
-		PointerRNA idptr;
-		RNA_id_pointer_create(&cache_file->id, &idptr);
-		RNA_property_pointer_set(&pprop->ptr, pprop->prop, idptr);
-		RNA_property_update(C, &pprop->ptr, pprop->prop);
+	/* Will be set when running invoke, not exec directly. */
+	if (op->customdata != NULL) {
+		/* hook into UI */
+		PropertyPointerRNA *pprop = op->customdata;
+		if (pprop->prop) {
+			/* when creating new ID blocks, use is already 1, but RNA
+			 * pointer se also increases user, so this compensates it */
+			id_us_min(&cache_file->id);
+
+			PointerRNA idptr;
+			RNA_id_pointer_create(&cache_file->id, &idptr);
+			RNA_property_pointer_set(&pprop->ptr, pprop->prop, idptr);
+			RNA_property_update(C, &pprop->ptr, pprop->prop);
+		}
+
+		MEM_freeN(op->customdata);
 	}
 
-	MEM_freeN(op->customdata);
-
 	return OPERATOR_FINISHED;
 }




More information about the Bf-blender-cvs mailing list