diff --git a/source/blender/blenkernel/intern/lib_id.c b/source/blender/blenkernel/intern/lib_id.c index 678f717efe4..dfe939aa878 100644 --- a/source/blender/blenkernel/intern/lib_id.c +++ b/source/blender/blenkernel/intern/lib_id.c @@ -344,8 +344,11 @@ static int lib_id_expand_local_cb(LibraryIDLinkCallbackData *cb_data) } if (cb_flag & IDWALK_CB_EMBEDDED) { - /* Embedded data-blocks need to be made fully local as well. */ - if (*id_pointer != NULL) { + /* Embedded data-blocks need to be made fully local as well. + * Note however that in some cases (when owner ID had to be duplicated instead of being made + * local directly), its embedded IDs should also have already been duplicated, and hence be + * fully local here already. */ + if (*id_pointer != NULL && ID_IS_LINKED(*id_pointer)) { BLI_assert(*id_pointer != id_self); lib_id_clear_library_data_ex(bmain, *id_pointer);