Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <bastien@blender.org>2021-04-10 16:25:58 +0300
committerBastien Montagne <bastien@blender.org>2021-04-10 16:25:58 +0300
commit3bd892a74c826597ee3ce21faf385599d6c6cd86 (patch)
tree2c0c4408f1207d49ac680b21e4cf8796e81efdbc /source/blender/blenkernel/intern/lib_override.c
parentc9e054c5de510452ca4f230db807f9c25d9ea4bb (diff)
LibOverride: Fix (unreported) assert when creating overrides of linked overrides.
We do not want to copy exiting overrides data from linked ID when creating its local override (be it either a template, or because linked ID is itself an override of another lib data). Note that this was not a very serious issue, would just cause some memory leak since override data is re-created on newly copied local data anyway. These use cases have been very little tested so far, but both complex production pipeline and future restrictive workflow will make them fairly common...
Diffstat (limited to 'source/blender/blenkernel/intern/lib_override.c')
-rw-r--r--source/blender/blenkernel/intern/lib_override.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/lib_override.c b/source/blender/blenkernel/intern/lib_override.c
index e42fab70af4..eac9e760ae5 100644
--- a/source/blender/blenkernel/intern/lib_override.c
+++ b/source/blender/blenkernel/intern/lib_override.c
@@ -196,7 +196,10 @@ void BKE_lib_override_library_free(struct IDOverrideLibrary **override, const bo
static ID *lib_override_library_create_from(Main *bmain, ID *reference_id)
{
- ID *local_id = BKE_id_copy(bmain, reference_id);
+ /* Note: We do not want to copy possible override data from reference here (whether it is an
+ * override template, or aleady an override of some other ref data). */
+ ID *local_id = BKE_id_copy_ex(
+ bmain, reference_id, NULL, LIB_ID_COPY_DEFAULT | LIB_ID_COPY_NO_LIB_OVERRIDE);
if (local_id == NULL) {
return NULL;