diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2017-08-14 18:07:30 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2017-08-14 18:07:30 +0300 |
commit | 3ab46f42046854e1f4c036a9b779177136017772 (patch) | |
tree | 9d0b1414feb32b955a4282d9f7117893d2811e99 /source/blender/blenkernel/intern/library.c | |
parent | 230be97284de444e6b2566f535141ca31647f6ab (diff) | |
parent | 3cd51c0379638045cd32c9aa74215032d7bc381b (diff) |
Merge branch 'master' into blender2.8
Diffstat (limited to 'source/blender/blenkernel/intern/library.c')
-rw-r--r-- | source/blender/blenkernel/intern/library.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index 15a0f1191f8..71fbb3d726a 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -492,18 +492,20 @@ bool id_make_local(Main *bmain, ID *id, const bool test, const bool lib_local) struct IDCopyLibManagementData { const ID *id_src; + ID *id_dst; int flag; }; /* Increases usercount as required, and remap self ID pointers. */ -static int id_copy_libmanagement_cb(void *user_data, ID *id_self, ID **id_pointer, int cb_flag) +static int id_copy_libmanagement_cb(void *user_data, ID *UNUSED(id_self), ID **id_pointer, int cb_flag) { struct IDCopyLibManagementData *data = user_data; ID *id = *id_pointer; /* Remap self-references to new copied ID. */ if (id == data->id_src) { - id = *id_pointer = id_self; + /* We cannot use id_self here, it is not *always* id_dst (thanks to $£!+@#&/? nodetrees). */ + id = *id_pointer = data->id_dst; } /* Increase used IDs refcount if needed and required. */ @@ -656,7 +658,7 @@ bool BKE_id_copy_ex(Main *bmain, const ID *id, ID **r_newid, const int flag, con } /* Update ID refcount, remap pointers to self in new ID. */ - struct IDCopyLibManagementData data = {.id_src = id, .flag = flag}; + struct IDCopyLibManagementData data = {.id_src = id, .id_dst = *r_newid, .flag = flag}; BKE_library_foreach_ID_link(bmain, *r_newid, id_copy_libmanagement_cb, &data, IDWALK_NOP); /* Do not make new copy local in case we are copying outside of main... |