diff options
author | Bastien Montagne <bastien@blender.org> | 2021-06-28 18:00:08 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2021-06-28 18:03:10 +0300 |
commit | 37458798fa02c777fb89d762b0cb2c2eadb7ca87 (patch) | |
tree | 712eafc2526ec1812383485ea541de080827f558 /source/blender/blenkernel/intern/lib_id.c | |
parent | e8d75b957f5200ea33449201db966d40247d9454 (diff) |
LibOverride: Fix crash in ShapeKeys when making a mesh override local.
Weird 'embedded for overrides' flag of embedded IDs (including ShapeKeys
in override context) was not properly cleaned up when making an override
fully local.
Reported by studio, thanks.
@jbakker should be backported to 2.93LTS if possible.
Diffstat (limited to 'source/blender/blenkernel/intern/lib_id.c')
-rw-r--r-- | source/blender/blenkernel/intern/lib_id.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/lib_id.c b/source/blender/blenkernel/intern/lib_id.c index b7cacba20b3..8bcfb8e159c 100644 --- a/source/blender/blenkernel/intern/lib_id.c +++ b/source/blender/blenkernel/intern/lib_id.c @@ -1941,13 +1941,13 @@ void BKE_library_make_local(Main *bmain, ntree->tag &= ~LIB_TAG_DOIT; } - if (id->lib == NULL) { + if (!ID_IS_LINKED(id->lib)) { id->tag &= ~(LIB_TAG_EXTERN | LIB_TAG_INDIRECT | LIB_TAG_NEW); id->flag &= ~LIB_INDIRECT_WEAK_LINK; if (ID_IS_OVERRIDE_LIBRARY_REAL(id) && ELEM(lib, NULL, id->override_library->reference->lib) && ((untagged_only == false) || !(id->tag & LIB_TAG_PRE_EXISTING))) { - BKE_lib_override_library_free(&id->override_library, true); + BKE_lib_override_library_make_local(id); } } /* The check on the fourth line (LIB_TAG_PRE_EXISTING) is done so it's possible to tag data |