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 <bastien@blender.org>2022-01-06 11:57:19 +0300
committerBastien Montagne <bastien@blender.org>2022-01-06 12:01:07 +0300
commite766dc9189a49dc6afc9474ae75999e6f4f9d4ac (patch)
tree0ca6fceb01f1ad0891b4b46807893e60bbf84eb3
parent6f389f1bb856df2a1d9d29bc542b5ad76748a84e (diff)
Fix (unreported) crash in liboverride after yesterday's commit.
Own mistake in rBbfb760e16acb.
-rw-r--r--source/blender/blenkernel/intern/lib_override.c3
-rw-r--r--source/blender/makesrna/intern/rna_access_compare_override.c20
2 files changed, 14 insertions, 9 deletions
diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c
index b0231585f68..011b7a4924d 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.c
@@ -739,7 +739,8 @@ static void lib_override_overrides_group_tag_recursive(LibOverrideGroupTagData *
BLI_assert(ID_IS_OVERRIDE_LIBRARY(id_owner));
BLI_assert(data->is_override);
- if (id_owner->override_library->flag & IDOVERRIDE_LIBRARY_FLAG_NO_HIERARCHY) {
+ if (ID_IS_OVERRIDE_LIBRARY_REAL(id_owner) &&
+ (id_owner->override_library->flag & IDOVERRIDE_LIBRARY_FLAG_NO_HIERARCHY) != 0) {
return;
}
diff --git a/source/blender/makesrna/intern/rna_access_compare_override.c b/source/blender/makesrna/intern/rna_access_compare_override.c
index 2af83c8adcb..e59938d7ea3 100644
--- a/source/blender/makesrna/intern/rna_access_compare_override.c
+++ b/source/blender/makesrna/intern/rna_access_compare_override.c
@@ -1088,17 +1088,19 @@ static void rna_porperty_override_collection_subitem_lookup(
static void rna_property_override_check_resync(Main *bmain,
PointerRNA *ptr_dst,
+ PointerRNA *ptr_src,
PointerRNA *ptr_item_dst,
PointerRNA *ptr_item_src)
{
- ID *id_owner = rna_property_override_property_real_id_owner(bmain, ptr_dst, NULL, NULL);
+ ID *id_owner_src = rna_property_override_property_real_id_owner(bmain, ptr_src, NULL, NULL);
+ ID *id_owner_dst = rna_property_override_property_real_id_owner(bmain, ptr_dst, NULL, NULL);
ID *id_src = rna_property_override_property_real_id_owner(bmain, ptr_item_src, NULL, NULL);
ID *id_dst = rna_property_override_property_real_id_owner(bmain, ptr_item_dst, NULL, NULL);
- BLI_assert(ID_IS_OVERRIDE_LIBRARY_REAL(id_owner));
+ BLI_assert(ID_IS_OVERRIDE_LIBRARY_REAL(id_owner_src));
/* If the owner ID is not part of an override hierarchy, there is no possible resync. */
- if (id_owner->override_library->flag & IDOVERRIDE_LIBRARY_FLAG_NO_HIERARCHY) {
+ if (id_owner_src->override_library->flag & IDOVERRIDE_LIBRARY_FLAG_NO_HIERARCHY) {
return;
}
@@ -1123,9 +1125,9 @@ static void rna_property_override_check_resync(Main *bmain,
* NOTE: Here we are testing if `id_owner` is referencing itself, in that case the new
* override copy generated by `BKE_lib_override_library_update` will already have its
* self-references updated to itself, instead of still pointing to its linked source. */
- (id_dst->lib == id_src->lib && id_dst != id_owner))) {
- id_owner->tag |= LIB_TAG_LIB_OVERRIDE_NEED_RESYNC;
- CLOG_INFO(&LOG, 3, "Local override %s detected as needing resync", id_owner->name);
+ (id_dst->lib == id_src->lib && id_dst != id_owner_dst))) {
+ id_owner_dst->tag |= LIB_TAG_LIB_OVERRIDE_NEED_RESYNC;
+ CLOG_INFO(&LOG, 3, "Local override %s detected as needing resync", id_owner_dst->name);
}
}
@@ -1242,7 +1244,8 @@ void RNA_struct_override_apply(Main *bmain,
PointerRNA prop_ptr_src = RNA_property_pointer_get(&data_src, prop_src);
PointerRNA prop_ptr_dst = RNA_property_pointer_get(&data_dst, prop_dst);
- rna_property_override_check_resync(bmain, ptr_dst, &prop_ptr_dst, &prop_ptr_src);
+ rna_property_override_check_resync(
+ bmain, ptr_dst, ptr_src, &prop_ptr_dst, &prop_ptr_src);
}
else if (op->rna_prop_type == PROP_COLLECTION) {
if (RNA_struct_is_ID(RNA_property_pointer_type(&data_src, prop_src))) {
@@ -1273,7 +1276,8 @@ void RNA_struct_override_apply(Main *bmain,
op,
opop);
- rna_property_override_check_resync(bmain, ptr_dst, ptr_item_dst, ptr_item_src);
+ rna_property_override_check_resync(
+ bmain, ptr_dst, ptr_src, ptr_item_dst, ptr_item_src);
}
}
}