diff options
author | Bastien Montagne <bastien@blender.org> | 2021-06-28 18:00:08 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2021-11-02 16:29:19 +0300 |
commit | 9a290dd6571d2998900222aabcb2b6660acef883 (patch) | |
tree | 4f8ba3d7b5ce772e11bc7ae342aa2c3010347b63 /source/blender/blenkernel/intern/lib_id.c | |
parent | 619c51592fcf1efcdc960386385f8a511c2a590e (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 6546603ffb4..eeda77771ed 100644 --- a/source/blender/blenkernel/intern/lib_id.c +++ b/source/blender/blenkernel/intern/lib_id.c @@ -1917,13 +1917,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 |