diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2019-05-27 17:46:45 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2019-05-27 17:48:56 +0300 |
commit | 392e58afb32162d7d31e5cfc0d6206382e7e7d62 (patch) | |
tree | c3a2448072e2166b567fc4ebc1fefea3531f2e4c | |
parent | 270faa4e9cf79e7355ea12a1a8fa316f7f4e78d7 (diff) |
Fix (unreported) invalid handling of IDs usercount in `BKE_mesh_new_from_object_to_bmain()`.
Would have broken usercount of mesh used as texco reference e.g.
-rw-r--r-- | source/blender/blenkernel/intern/mesh_convert.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/mesh_convert.c b/source/blender/blenkernel/intern/mesh_convert.c index c7ddb8628f9..fce80272738 100644 --- a/source/blender/blenkernel/intern/mesh_convert.c +++ b/source/blender/blenkernel/intern/mesh_convert.c @@ -1179,7 +1179,15 @@ static int foreach_libblock_make_original_and_usercount_callback(void *user_data return IDWALK_RET_NOP; } *id_p = DEG_get_original_id(*id_p); - id_us_plus(*id_p); + + if (cb_flag & IDWALK_CB_USER) { + id_us_plus(*id_p); + } + else if (cb_flag & IDWALK_CB_USER_ONE) { + /* Note: in that context, that one should not be needed (since there should be at least already + * one USER_ONE user of that ID), but better be consistent. */ + id_us_ensure_real(*id_p); + } return IDWALK_RET_NOP; } |