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 /source/blender/makesrna | |
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
Diffstat (limited to 'source/blender/makesrna')
-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; } |