[Bf-blender-cvs] [bace031b654] master: Fix (unreported) assert in liboverride reset code.

Bastien Montagne noreply at git.blender.org
Tue Feb 9 18:56:21 CET 2021


Commit: bace031b654fec17fd23541b4b667253870e3355
Author: Bastien Montagne
Date:   Tue Feb 9 18:53:52 2021 +0100
Branches: master
https://developer.blender.org/rBbace031b654fec17fd23541b4b667253870e3355

Fix (unreported) assert in liboverride reset code.

Invalid override properties ( i.e. invalid RNA paths) are not strictly
speaking errors, many things can lead to that situation. Just ignore and
skip those cases.

===================================================================

M	source/blender/blenkernel/intern/lib_override.c

===================================================================

diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c
index 03ce1b8c9ca..68a75e469fd 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.c
@@ -1647,24 +1647,26 @@ static bool lib_override_library_id_reset_do(Main *bmain, ID *id_root)
                          &ptr_root_lib);
 
       bool prop_exists = RNA_path_resolve_property(&ptr_root, op->rna_path, &ptr, &prop);
-      BLI_assert(prop_exists);
-      prop_exists = RNA_path_resolve_property(&ptr_root_lib, op->rna_path, &ptr_lib, &prop_lib);
-
       if (prop_exists) {
-        BLI_assert(ELEM(RNA_property_type(prop), PROP_POINTER, PROP_COLLECTION));
-        BLI_assert(RNA_property_type(prop) == RNA_property_type(prop_lib));
-        if (is_collection) {
-          ptr.type = RNA_property_pointer_type(&ptr, prop);
-          ptr_lib.type = RNA_property_pointer_type(&ptr_lib, prop_lib);
-        }
-        else {
-          ptr = RNA_property_pointer_get(&ptr, prop);
-          ptr_lib = RNA_property_pointer_get(&ptr_lib, prop_lib);
-        }
-        if (ptr.owner_id != NULL && ptr_lib.owner_id != NULL) {
-          BLI_assert(ptr.type == ptr_lib.type);
-          do_op_delete = !(RNA_struct_is_ID(ptr.type) && ptr.owner_id->override_library != NULL &&
-                           ptr.owner_id->override_library->reference == ptr_lib.owner_id);
+        prop_exists = RNA_path_resolve_property(&ptr_root_lib, op->rna_path, &ptr_lib, &prop_lib);
+
+        if (prop_exists) {
+          BLI_assert(ELEM(RNA_property_type(prop), PROP_POINTER, PROP_COLLECTION));
+          BLI_assert(RNA_property_type(prop) == RNA_property_type(prop_lib));
+          if (is_collection) {
+            ptr.type = RNA_property_pointer_type(&ptr, prop);
+            ptr_lib.type = RNA_property_pointer_type(&ptr_lib, prop_lib);
+          }
+          else {
+            ptr = RNA_property_pointer_get(&ptr, prop);
+            ptr_lib = RNA_property_pointer_get(&ptr_lib, prop_lib);
+          }
+          if (ptr.owner_id != NULL && ptr_lib.owner_id != NULL) {
+            BLI_assert(ptr.type == ptr_lib.type);
+            do_op_delete = !(RNA_struct_is_ID(ptr.type) &&
+                             ptr.owner_id->override_library != NULL &&
+                             ptr.owner_id->override_library->reference == ptr_lib.owner_id);
+          }
         }
       }
     }



More information about the Bf-blender-cvs mailing list