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)...
This commit is contained in:
Bastien Montagne 2019-10-07 11:56:33 +02:00
parent 2cb5078ce2
commit 7a100a3f60
Notes: blender-bot 2023-02-14 02:30:10 +01:00
Referenced by issue #70555, Crash when attempting to create an override for an object with a cloth modifier
1 changed files with 5 additions and 4 deletions

View File

@ -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);
}