[Bf-blender-cvs] [5c4bd878a23] soc-2021-uv-editor-improvements: Fix T90421: edit-mode auto-smooth crash when angle set to 180degrees

Campbell Barton noreply at git.blender.org
Mon Aug 9 03:24:40 CEST 2021


Commit: 5c4bd878a23dccd829f448a6ca152b25d62faa72
Author: Campbell Barton
Date:   Wed Aug 4 22:34:55 2021 +1000
Branches: soc-2021-uv-editor-improvements
https://developer.blender.org/rB5c4bd878a23dccd829f448a6ca152b25d62faa72

Fix T90421: edit-mode auto-smooth crash when angle set to 180degrees

Error in 39b2a7bb7e815e051348bf5c5ec777d091324164
which failed to set edge flags with single threaded calculation,
used for low poly models.

===================================================================

M	source/blender/bmesh/intern/bmesh_mesh_normals.c

===================================================================

diff --git a/source/blender/bmesh/intern/bmesh_mesh_normals.c b/source/blender/bmesh/intern/bmesh_mesh_normals.c
index 746f094aed6..6504a2de116 100644
--- a/source/blender/bmesh/intern/bmesh_mesh_normals.c
+++ b/source/blender/bmesh/intern/bmesh_mesh_normals.c
@@ -1156,10 +1156,6 @@ static void bm_mesh_loops_calc_normals__single_threaded(BMesh *bm,
     edge_vectors = BLI_stack_new(sizeof(float[3]), __func__);
   }
 
-  if (split_angle_cos != -1.0f) {
-    bm_mesh_edges_sharp_tag(bm, fnos, has_clnors ? (float)M_PI : split_angle, false);
-  }
-
   /* Clear all loops' tags (means none are to be skipped for now). */
   int index_face, index_loop = 0;
   BM_ITER_MESH_INDEX (f_curr, &fiter, bm, BM_FACES_OF_MESH, index_face) {
@@ -1171,10 +1167,16 @@ static void bm_mesh_loops_calc_normals__single_threaded(BMesh *bm,
     do {
       BM_elem_index_set(l_curr, index_loop++); /* set_inline */
       BM_elem_flag_disable(l_curr, BM_ELEM_TAG);
+      /* Needed for when #bm_mesh_edges_sharp_tag doesn't run. */
+      BM_elem_flag_disable(l_curr->e, BM_ELEM_TAG);
     } while ((l_curr = l_curr->next) != l_first);
   }
   bm->elem_index_dirty &= ~(BM_FACE | BM_LOOP);
 
+  if (split_angle_cos != -1.0f) {
+    bm_mesh_edges_sharp_tag(bm, fnos, has_clnors ? (float)M_PI : split_angle, false);
+  }
+
   /* We now know edges that can be smoothed (they are tagged),
    * and edges that will be hard (they aren't).
    * Now, time to generate the normals.



More information about the Bf-blender-cvs mailing list