Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2018-10-30 08:11:39 +0300
committerCampbell Barton <ideasman42@gmail.com>2018-10-30 08:17:46 +0300
commitf711c44b8dc8e10b37b387cefabb7236ae77decd (patch)
tree51d5021bd6ff0abbbd52913b3ba597d1ed0fdd08 /source/blender/python/intern/bpy_rna.c
parent0973ea51325ef27ca9c6ed305fd4f3c4ec1184c9 (diff)
PyAPI: Support for 'None' string args from Python
This is needed because some RNA functions differentiate a NULL 'char *' argument from an empty string. Previously a NULL argument could be passed when the C definition defined the default as NULL and the argument wasn't passed which is a fairly hidden way of handling things. Now strings use `PROP_NEVER_NULL` by default which can be cleared for function arguments that allow None -> NULL.
Diffstat (limited to 'source/blender/python/intern/bpy_rna.c')
-rw-r--r--source/blender/python/intern/bpy_rna.c20
1 files changed, 19 insertions, 1 deletions
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 */