Commit: aa01b4520b0bcc41fb9c9c30832458bf454477cc
Author: Campbell Barton
Date:   Fri Dec 11 01:18:03 2015 +1100
Branches: bmesh-boolean-experiment
https://developer.blender.org/rBaa01b4520b0bcc41fb9c9c30832458bf454477cc

Check when we can't find paths - was asserting

For very scrambled degenerate geometry where this error is unavoidable.

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

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

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

diff --git a/source/blender/bmesh/intern/bmesh_polygon_edgenet.c 
b/source/blender/bmesh/intern/bmesh_polygon_edgenet.c
index d172944..7bc4096 100644
--- a/source/blender/bmesh/intern/bmesh_polygon_edgenet.c
+++ b/source/blender/bmesh/intern/bmesh_polygon_edgenet.c
@@ -1202,29 +1202,36 @@ bool BM_face_split_edgenet_connect_islands(
                                BMVert *v_origin = g->vert_span.min;
 
                                const int index_other = 
bm_face_split_edgenet_find_connection(&args, v_origin, false);
-                               BLI_assert(index_other >= 0 && index_other < 
(int)vert_arr_len);
+                               // BLI_assert(index_other >= 0 && index_other < 
(int)vert_arr_len);
 
-                               BMVert *v_end = vert_arr[index_other];
+                               /* only for degenerate geometry */
+                               if (index_other != -1) {
+                                       BMVert *v_end = vert_arr[index_other];
 
-                               edge_net_new[edge_net_new_index] = 
BM_edge_create(bm, v_origin, v_end, NULL, 0);
-                               edge_net_new_index++;
-                               args.edge_arr_new_len++;
+                                       edge_net_new[edge_net_new_index] = 
BM_edge_create(bm, v_origin, v_end, NULL, 0);
+                                       edge_net_new_index++;
+                                       args.edge_arr_new_len++;
+                               }
                        }
 
                        {
                                BMVert *v_origin = g->vert_span.max;
 
                                const int index_other = 
bm_face_split_edgenet_find_connection(&args, v_origin, true);
-                               BLI_assert(index_other >= 0 && index_other < 
(int)vert_arr_len);
-                               BMVert *v_end = vert_arr[index_other];
+                               // BLI_assert(index_other >= 0 && index_other < 
(int)vert_arr_len);
+
+                               /* only for degenerate geometry */
+                               if (index_other != -1) {
+                                       BMVert *v_end = vert_arr[index_other];
 
-                               edge_net_new[edge_net_new_index] = 
BM_edge_create(bm, v_origin, v_end, NULL, 0);
-                               edge_net_new_index++;
-                               args.edge_arr_new_len++;
+                                       edge_net_new[edge_net_new_index] = 
BM_edge_create(bm, v_origin, v_end, NULL, 0);
+                                       edge_net_new_index++;
+                                       args.edge_arr_new_len++;
 
-                               /* tell the 'next' group it doesn't need to 
create its own back-link */
-                               unsigned int g_index_other = 
verts_group_table[index_other];
-                               group_arr[g_index_other]->has_prev_edge = true;
+                                       /* tell the 'next' group it doesn't 
need to create its own back-link */
+                                       unsigned int g_index_other = 
verts_group_table[index_other];
+                                       group_arr[g_index_other]->has_prev_edge 
= true;
+                               }
                        }
 
                }

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to