From 76be5b5bf5c830f8a3a3640fcf439bdca3a9aa89 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Fri, 8 Nov 2019 14:52:07 +0100 Subject: Fix T70789: Using Remove Single Override breaks file loading (crash). We only need to refine rna pointer for actual collection properties, other arrays we handle directly the the appy callback. --- source/blender/makesrna/intern/rna_access_compare_override.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/source/blender/makesrna/intern/rna_access_compare_override.c b/source/blender/makesrna/intern/rna_access_compare_override.c index 18fbe7886e9..7dae3cbf339 100644 --- a/source/blender/makesrna/intern/rna_access_compare_override.c +++ b/source/blender/makesrna/intern/rna_access_compare_override.c @@ -890,8 +890,11 @@ static void rna_property_override_apply_ex(Main *bmain, * Note that here, src is the local saved ID, and dst is a copy of the linked ID (since we use * local ID as storage to apply local changes on top of a clean copy of the linked data). */ PointerRNA private_ptr_item_dst, private_ptr_item_src, private_ptr_item_storage; - if (opop->subitem_local_name != NULL || opop->subitem_reference_name != NULL || - opop->subitem_local_index != -1 || opop->subitem_reference_index != -1) { + if ((RNA_property_type(prop_dst) == PROP_COLLECTION && + RNA_property_type(prop_src) == PROP_COLLECTION && + (prop_storage == NULL || RNA_property_type(prop_storage) == PROP_COLLECTION)) && + (opop->subitem_local_name != NULL || opop->subitem_reference_name != NULL || + opop->subitem_local_index != -1 || opop->subitem_reference_index != -1)) { RNA_POINTER_INVALIDATE(&private_ptr_item_dst); RNA_POINTER_INVALIDATE(&private_ptr_item_src); RNA_POINTER_INVALIDATE(&private_ptr_item_storage); -- cgit v1.2.3