[Bf-blender-cvs] [398538b914a] blender-v3.1-release: Fix T95987: Data transfer modifier custom normals crash
Hans Goudey
noreply at git.blender.org
Wed Feb 23 15:49:36 CET 2022
Commit: 398538b914a3c7ff3cf845f4fe6b2bdbb47204cb
Author: Hans Goudey
Date: Wed Feb 23 09:49:25 2022 -0500
Branches: blender-v3.1-release
https://developer.blender.org/rB398538b914a3c7ff3cf845f4fe6b2bdbb47204cb
Fix T95987: Data transfer modifier custom normals crash
59343ee1627f4c369e missed one case of normals being
retrieved from polygon custom data instead of the normals API.
The fix is simple.
===================================================================
M source/blender/blenkernel/intern/data_transfer.c
===================================================================
diff --git a/source/blender/blenkernel/intern/data_transfer.c b/source/blender/blenkernel/intern/data_transfer.c
index 79aecb4598a..5aa364f5f16 100644
--- a/source/blender/blenkernel/intern/data_transfer.c
+++ b/source/blender/blenkernel/intern/data_transfer.c
@@ -280,7 +280,6 @@ static void data_transfer_dtdata_type_preprocess(Mesh *me_src,
/* This should be ensured by cddata_masks we pass to code generating/giving us me_src now. */
BLI_assert(CustomData_get_layer(&me_src->ldata, CD_NORMAL) != NULL);
- BLI_assert(CustomData_get_layer(&me_src->pdata, CD_NORMAL) != NULL);
(void)me_src;
float(*loop_nors_dst)[3];
@@ -335,15 +334,12 @@ static void data_transfer_dtdata_type_postprocess(Object *UNUSED(ob_src),
const int num_polys_dst = me_dst->totpoly;
MLoop *loops_dst = me_dst->mloop;
const int num_loops_dst = me_dst->totloop;
- CustomData *pdata_dst = &me_dst->pdata;
CustomData *ldata_dst = &me_dst->ldata;
- const float(*poly_nors_dst)[3] = CustomData_get_layer(pdata_dst, CD_NORMAL);
+ const float(*poly_nors_dst)[3] = BKE_mesh_poly_normals_ensure(me_dst);
float(*loop_nors_dst)[3] = CustomData_get_layer(ldata_dst, CD_NORMAL);
short(*custom_nors_dst)[2] = CustomData_get_layer(ldata_dst, CD_CUSTOMLOOPNORMAL);
- BLI_assert(poly_nors_dst);
-
if (!custom_nors_dst) {
custom_nors_dst = CustomData_add_layer(
ldata_dst, CD_CUSTOMLOOPNORMAL, CD_CALLOC, NULL, num_loops_dst);
More information about the Bf-blender-cvs
mailing list