[Bf-blender-cvs] [7a6224f76c4] newboolean: Fix crash in debug newboolean due to repeated vertex.
Howard Trickey
noreply at git.blender.org
Wed Mar 11 13:07:14 CET 2020
Commit: 7a6224f76c44900bd10f283b6bd9b47b79eb2e64
Author: Howard Trickey
Date: Wed Mar 11 08:06:21 2020 -0400
Branches: newboolean
https://developer.blender.org/rB7a6224f76c44900bd10f283b6bd9b47b79eb2e64
Fix crash in debug newboolean due to repeated vertex.
===================================================================
M source/blender/bmesh/tools/bmesh_boolean.c
===================================================================
diff --git a/source/blender/bmesh/tools/bmesh_boolean.c b/source/blender/bmesh/tools/bmesh_boolean.c
index b1b3d30b5d2..ac79d2eedeb 100644
--- a/source/blender/bmesh/tools/bmesh_boolean.c
+++ b/source/blender/bmesh/tools/bmesh_boolean.c
@@ -3494,13 +3494,22 @@ static PartPartIntersect *non_coplanar_part_part_intersect(BoolState *bs,
if (v2 == -1) {
v2 = meshadd_add_vert_db(bs, meshadd, co2, -1, true);
}
- e = imesh_find_edge(im, v1, v2);
- if (e == -1) {
- /* TODO: if overlaps an existing edge, use as example. */
- e = meshadd_add_edge(bs, meshadd, v1, v2, -1, true);
+ if (v1 == v2) {
+ /* Even though coords are far enough apart with double
+ * test, maybe they are close enough with float test.
+ * Just add a single vert if this happens.
+ */
+ add_vert_to_partpartintersect(bs, ppi, v1);
+ }
+ else {
+ e = imesh_find_edge(im, v1, v2);
+ if (e == -1) {
+ /* TODO: if overlaps an existing edge, use as example. */
+ e = meshadd_add_edge(bs, meshadd, v1, v2, -1, true);
+ }
+ add_edge_to_partpartintersect(bs, ppi, e);
+ add_to_intset(bs, intersection_edges, e);
}
- add_edge_to_partpartintersect(bs, ppi, e);
- add_to_intset(bs, intersection_edges, e);
}
}
}
More information about the Bf-blender-cvs
mailing list