diff options
author | Hans Goudey <h.goudey@me.com> | 2022-02-26 01:18:07 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2022-02-26 01:18:07 +0300 |
commit | 7aa0be4b32bdbee61ea732f43175c8bc6585fc98 (patch) | |
tree | 2fa20485aeb2380d7191b5393c7c4a208b5f482b /source/blender/blenkernel/BKE_mesh.h | |
parent | a911f075d7aa823b215d4e7baf91ea4f5bd6099c (diff) |
Fix: Failing OBJ export tests due to mesh normals commit
In some cases, the normal edit modifier calculated the normals on one
mesh with the "ensure" functions, then copied the mesh and retrieved
the layers "for write" on the copy. Since 59343ee1627f4c369e23, normal
layers are never copied, and normals are allocated with malloc instead
of calloc, so the mutable memory was uninitialized.
Fix by calculating normals on the correct mesh, and also add a warning
to the "for write" functions in the header.
Diffstat (limited to 'source/blender/blenkernel/BKE_mesh.h')
-rw-r--r-- | source/blender/blenkernel/BKE_mesh.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_mesh.h b/source/blender/blenkernel/BKE_mesh.h index 72a1303fc6b..26c48816b39 100644 --- a/source/blender/blenkernel/BKE_mesh.h +++ b/source/blender/blenkernel/BKE_mesh.h @@ -414,6 +414,9 @@ void BKE_mesh_assert_normals_dirty_or_calculated(const struct Mesh *mesh); * \note In order to clear the dirty flag, this function should be followed by a call to * #BKE_mesh_vertex_normals_clear_dirty. This is separate so that normals are still tagged dirty * while they are being assigned. + * + * \warning The memory returned by this function is not initialized if it was not previously + * allocated. */ float (*BKE_mesh_vertex_normals_for_write(struct Mesh *mesh))[3]; @@ -424,6 +427,9 @@ float (*BKE_mesh_vertex_normals_for_write(struct Mesh *mesh))[3]; * \note In order to clear the dirty flag, this function should be followed by a call to * #BKE_mesh_poly_normals_clear_dirty. This is separate so that normals are still tagged dirty * while they are being assigned. + * + * \warning The memory returned by this function is not initialized if it was not previously + * allocated. */ float (*BKE_mesh_poly_normals_for_write(struct Mesh *mesh))[3]; |