From d24a49da84223edc25c3e34f6405f36e2041e1be Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Wed, 6 Dec 2023 17:11:56 +0100 Subject: [PATCH] Fix (unreported) missing Viewlayer update in liboverride code. In post-processing of objects & collections after liboverrides creation, viewlayer could be accessed while tagged as dirty, since the object/collection hierarchy may be modified several times during this process. --- source/blender/blenkernel/intern/lib_override.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/source/blender/blenkernel/intern/lib_override.cc b/source/blender/blenkernel/intern/lib_override.cc index 36fc6233ccf..d50c0fad15a 100644 --- a/source/blender/blenkernel/intern/lib_override.cc +++ b/source/blender/blenkernel/intern/lib_override.cc @@ -1402,6 +1402,10 @@ static void lib_override_library_create_post_process(Main *bmain, ob_new->id.override_library->reference == &ob->id); if (old_active_object == ob) { + BLI_assert(view_layer); + /* May have been tagged as dirty again in a previous iteration of this loop, e.g. if adding a + * liboverride object to a colleciton. */ + BKE_view_layer_synced_ensure(scene, view_layer); Base *basact = BKE_view_layer_base_find(view_layer, ob_new); if (basact != nullptr) { view_layer->basact = basact;