[Bf-blender-cvs] [7270ba011cd] master: Fix two issues with recent new Append code.

Bastien Montagne noreply at git.blender.org
Mon Sep 27 16:36:19 CEST 2021


Commit: 7270ba011cd08656c0b18a60e6503223c1f50dcc
Author: Bastien Montagne
Date:   Mon Sep 27 16:33:41 2021 +0200
Branches: master
https://developer.blender.org/rB7270ba011cd08656c0b18a60e6503223c1f50dcc

Fix two issues with recent new Append code.

* ID pointer returned by `wm_file_link_append_datablock_ex` was
  improperly extracted from `WMLinkAppendDataItem` before append step.

* Code deleting linked IDs when their local matching version was re-used
  did not properly clear `LIB_TAG_DOIT` beforehand.

===================================================================

M	source/blender/windowmanager/intern/wm_files_link.c

===================================================================

diff --git a/source/blender/windowmanager/intern/wm_files_link.c b/source/blender/windowmanager/intern/wm_files_link.c
index 92335f28d94..ea0b0a9feaa 100644
--- a/source/blender/windowmanager/intern/wm_files_link.c
+++ b/source/blender/windowmanager/intern/wm_files_link.c
@@ -809,6 +809,7 @@ static void wm_append_do(WMLinkAppendData *lapp_data,
   }
 
   /* Remove linked IDs when a local existing data has been reused instead. */
+  BKE_main_id_tag_all(bmain, LIB_TAG_DOIT, false);
   for (itemlink = lapp_data->items.list; itemlink; itemlink = itemlink->next) {
     WMLinkAppendDataItem *item = itemlink->link;
 
@@ -822,7 +823,6 @@ static void wm_append_do(WMLinkAppendData *lapp_data,
     }
     BLI_assert(ID_IS_LINKED(id));
     BLI_assert(id->newid != NULL);
-    BLI_assert((id->tag & LIB_TAG_DOIT) == 0);
 
     id->tag |= LIB_TAG_DOIT;
     item->new_id = id->newid;
@@ -1347,13 +1347,13 @@ static ID *wm_file_link_append_datablock_ex(Main *bmain,
   /* Link datablock. */
   wm_link_do(lapp_data, NULL, bmain, scene, view_layer, v3d);
 
-  /* Get linked datablock and free working data. */
-  ID *id = item->new_id;
-
   if (do_append) {
     wm_append_do(lapp_data, NULL, bmain, scene, view_layer, v3d);
   }
 
+  /* Get linked datablock and free working data. */
+  ID *id = item->new_id;
+
   wm_link_append_data_free(lapp_data);
 
   BKE_main_id_tag_all(bmain, LIB_TAG_PRE_EXISTING, false);



More information about the Bf-blender-cvs mailing list