diff options
-rw-r--r-- | source/blender/makesrna/intern/rna_define.c | 3 | ||||
-rw-r--r-- | source/blender/python/intern/bpy_rna.c | 20 |
2 files changed, 21 insertions, 2 deletions
diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c index 42db80c83c0..6724315f376 100644 --- a/source/blender/makesrna/intern/rna_define.c +++ b/source/blender/makesrna/intern/rna_define.c @@ -1165,7 +1165,8 @@ PropertyRNA *RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier case PROP_STRING: { StringPropertyRNA *sprop = (StringPropertyRNA *)prop; - + /* By default don't allow NULL string args, callers may clear. */ + RNA_def_property_flag(prop, PROP_NEVER_NULL); sprop->defaultvalue = ""; break; } diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c index 32d8c01be76..b4020c9fc8f 100644 --- a/source/blender/python/intern/bpy_rna.c +++ b/source/blender/python/intern/bpy_rna.c @@ -1729,7 +1729,25 @@ static int pyrna_py_to_prop( const int subtype = RNA_property_subtype(prop); const char *param; - if (subtype == PROP_BYTESTRING) { + if (value == Py_None) { + if ((RNA_property_flag(prop) & PROP_NEVER_NULL) == 0) { + if (data) { + *((char **)data) = (char *)NULL; + } + else { + RNA_property_string_set(ptr, prop, NULL); + } + } + else { + PyC_Err_Format_Prefix( + PyExc_TypeError, + "%.200s %.200s.%.200s doesn't support None from string types", + error_prefix, RNA_struct_identifier(ptr->type), + RNA_property_identifier(prop)); + return -1; + } + } + else if (subtype == PROP_BYTESTRING) { /* Byte String */ |