diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2019-09-02 18:34:56 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2019-09-02 19:39:08 +0300 |
commit | 99e8aeaa4a20933bdb6c7decafb0eac1e5bca002 (patch) | |
tree | 969601bcf204e3682aa03b319da567fb7085be52 /source/blender/blenkernel/intern/linestyle.c | |
parent | 3850557073a156fed94455eb3d7a9b3aad340880 (diff) |
DatablockManagement: Fix/sanitize handling of flags for private ID data in copy functions.
Not sure exactly why that was working with nodetrees in depsgraph (could be some special
code in the despgraph), but we always want to allocate memory for the nodetrees here!
Diffstat (limited to 'source/blender/blenkernel/intern/linestyle.c')
-rw-r--r-- | source/blender/blenkernel/intern/linestyle.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/linestyle.c b/source/blender/blenkernel/intern/linestyle.c index 7bfe5a7c8ff..e5fa5ff08b0 100644 --- a/source/blender/blenkernel/intern/linestyle.c +++ b/source/blender/blenkernel/intern/linestyle.c @@ -167,6 +167,8 @@ void BKE_linestyle_copy_data(struct Main *bmain, { /* We never handle usercount here for own data. */ const int flag_subdata = flag | LIB_ID_CREATE_NO_USER_REFCOUNT; + /* We always need allocation of our private ID data. */ + const int flag_private_id_data = flag_subdata & ~LIB_ID_CREATE_NO_ALLOCATE; for (int a = 0; a < MAX_MTEX; a++) { if (linestyle_src->mtex[a]) { @@ -176,9 +178,10 @@ void BKE_linestyle_copy_data(struct Main *bmain, } if (linestyle_src->nodetree) { - /* Note: nodetree is *not* in bmain, however this specific case is handled at lower level - * (see BKE_libblock_copy_ex()). */ - BKE_id_copy_ex(bmain, (ID *)linestyle_src->nodetree, (ID **)&linestyle_dst->nodetree, flag); + BKE_id_copy_ex(bmain, + (ID *)linestyle_src->nodetree, + (ID **)&linestyle_dst->nodetree, + flag_private_id_data); } LineStyleModifier *m; |