diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2018-04-17 12:59:14 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2018-04-17 12:59:14 +0300 |
commit | aff71a7fdced77a29a44124f8caae191b27ac91d (patch) | |
tree | a70f56e883f115a1affa7faa6e25e1aefb363e5c | |
parent | eb6fe5fa94b86a0a20742e06bf1e68b4cbaf6693 (diff) |
Fix (unreported) RNA sometimes trying to get named sub-props from non-Group IDProp.
Why exactly this happens remains unclear, found that in the
autumn.blenrig file of Spring production while working on static
overrides... Tons of ugly IDProps in that rig. xD
-rw-r--r-- | source/blender/makesrna/intern/rna_access.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c index bec6830f8c3..80e377ad8e1 100644 --- a/source/blender/makesrna/intern/rna_access.c +++ b/source/blender/makesrna/intern/rna_access.c @@ -277,8 +277,9 @@ IDProperty *RNA_struct_idprops(PointerRNA *ptr, bool create) { StructRNA *type = ptr->type; - if (type && type->idproperties) + if (type && type->idproperties) { return type->idproperties(ptr, create); + } return NULL; } @@ -292,8 +293,16 @@ static IDProperty *rna_idproperty_find(PointerRNA *ptr, const char *name) { IDProperty *group = RNA_struct_idprops(ptr, 0); - if (group) - return IDP_GetPropertyFromGroup(group, name); + if (group) { + if (group->type == IDP_GROUP) { + return IDP_GetPropertyFromGroup(group, name); + } + else { + /* Not sure why that happens sometimes, with nested properties... */ + /* Seems to be actually array prop, name is usually "0"... To be sorted out later. */ +// printf("Got unexpected IDProp container when trying to retrieve %s: %d\n", name, group->type); + } + } return NULL; } |