diff options
Diffstat (limited to 'source/blender/geometry/intern/mesh_merge_by_distance.cc')
-rw-r--r-- | source/blender/geometry/intern/mesh_merge_by_distance.cc | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/source/blender/geometry/intern/mesh_merge_by_distance.cc b/source/blender/geometry/intern/mesh_merge_by_distance.cc index e49848a030b..1a07ebf31f6 100644 --- a/source/blender/geometry/intern/mesh_merge_by_distance.cc +++ b/source/blender/geometry/intern/mesh_merge_by_distance.cc @@ -563,14 +563,10 @@ static void weld_edge_groups_setup(const int medge_len, Array<WeldGroupEdge> &r_edge_groups) { /* Get weld edge groups. */ - - struct WeldGroupEdge *wegrp_iter; - int wgroups_len = wedge.size() - edge_kill_len; r_edge_groups.reinitialize(wgroups_len); r_edge_groups.fill({{0}}); MutableSpan<WeldGroupEdge> wegroups = r_edge_groups; - wegrp_iter = &r_edge_groups[0]; wgroups_len = 0; for (const int i : IndexRange(medge_len)) { @@ -584,11 +580,10 @@ static void weld_edge_groups_setup(const int medge_len, } else { we->edge_dest = we->edge_orig; - wegrp_iter->v1 = we->vert_a; - wegrp_iter->v2 = we->vert_b; + wegroups[wgroups_len].v1 = we->vert_a; + wegroups[wgroups_len].v2 = we->vert_b; r_edge_groups_map[i] = wgroups_len; wgroups_len++; - wegrp_iter++; } } else { @@ -598,6 +593,11 @@ static void weld_edge_groups_setup(const int medge_len, BLI_assert(wgroups_len == wedge.size() - edge_kill_len); + if (wgroups_len == 0) { + /* All edges in the context are collapsed. */ + return; + } + for (const WeldEdge &we : wedge) { if (we.flag == ELEM_COLLAPSED) { continue; |