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:
authorBastien Montagne <montagne29@wanadoo.fr>2019-10-07 12:56:33 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2019-10-07 14:17:56 +0300
commit7a100a3f602ae6bec963ba537933722abf457368 (patch)
tree955e507e5502c32fc7f3ad0681aec1b4e27030d6 /source/blender/makesrna/intern/rna_rna.c
parent2cb5078ce2639b66360e6c5bba356d83af7760df (diff)
Fix T70555: Crash when attempting to create an override for an object with a cloth modifier.
Was not taking into account the case where pointer RNA prop is valid, but has no data (i.e. is a 'null' pointer)...
Diffstat (limited to 'source/blender/makesrna/intern/rna_rna.c')
-rw-r--r--source/blender/makesrna/intern/rna_rna.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c
index 26c8df4c7bb..4db702b215f 100644
--- a/source/blender/makesrna/intern/rna_rna.c
+++ b/source/blender/makesrna/intern/rna_rna.c
@@ -1157,20 +1157,21 @@ static bool rna_property_override_diff_propptr_validate_diffing(PointerRNA *prop
*r_is_id = *r_is_null = *r_is_type_diff = false;
/* Beware, PointerRNA_NULL has no type and is considered a 'blank page'! */
- if (propptr_a->type == NULL) {
- if (propptr_b == NULL || propptr_b->type == NULL) {
+ if (ELEM(NULL, propptr_a->type, propptr_a->data)) {
+ if (ELEM(NULL, propptr_b, propptr_b->type, propptr_b->data)) {
*r_is_null = true;
}
else {
*r_is_id = RNA_struct_is_ID(propptr_b->type);
*r_is_null = true;
- *r_is_type_diff = true;
+ *r_is_type_diff = propptr_a->type != propptr_b->type;
}
is_valid_for_diffing = false;
}
else {
*r_is_id = RNA_struct_is_ID(propptr_a->type);
- *r_is_null = *r_is_type_diff = (ELEM(NULL, propptr_b, propptr_b->type));
+ *r_is_null = (ELEM(NULL, propptr_b, propptr_b->type, propptr_b->data));
+ *r_is_type_diff = (propptr_b == NULL || propptr_b->type != propptr_a->type);
is_valid_for_diffing = !(*r_is_id || *r_is_null);
}