[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