From ec851efda93ed19c9f7063c6167ae9437ed6803c Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Tue, 20 Nov 2018 17:54:48 +0100 Subject: Fix T57923: Freeze in mesh vnors computation code with some degenerated geometry. Second part of the fix: do not try at all to compute normals in degenerated geometry. Just loss of time and potential issues later with weird invalid computed values. --- source/blender/bmesh/intern/bmesh_mesh.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'source/blender/bmesh/intern/bmesh_mesh.c') diff --git a/source/blender/bmesh/intern/bmesh_mesh.c b/source/blender/bmesh/intern/bmesh_mesh.c index 7a63fa3c64f..3fe54b7229a 100644 --- a/source/blender/bmesh/intern/bmesh_mesh.c +++ b/source/blender/bmesh/intern/bmesh_mesh.c @@ -392,6 +392,11 @@ static void mesh_verts_calc_normals_accum_cb(void *userdata, MempoolIterData *mp fac = saacos(-dotprod); + if (fac != fac) { /* NAN detection. */ + /* Degenerated case, nothing to do here, just ignore that vertex. */ + continue; + } + /* accumulate weighted face normal into the vertex's normal */ float *v_no = data->vnos ? data->vnos[BM_elem_index_get(l_iter->v)] : l_iter->v->no; -- cgit v1.2.3