[Bf-blender-cvs] [52b2769b9c1] master: Fix T95169: Assert in weld modifier code
Germano Cavalcante
noreply at git.blender.org
Tue Jan 25 20:56:14 CET 2022
Commit: 52b2769b9c1283dbe42176fc5581817f9e7d3a94
Author: Germano Cavalcante
Date: Tue Jan 25 13:56:00 2022 -0600
Branches: master
https://developer.blender.org/rB52b2769b9c1283dbe42176fc5581817f9e7d3a94
Fix T95169: Assert in weld modifier code
Return early before accessing the array when all edges are merged.
===================================================================
M source/blender/geometry/intern/mesh_merge_by_distance.cc
===================================================================
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;
More information about the Bf-blender-cvs
mailing list