[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [59415] trunk/blender/source/blender/bmesh /operators/bmo_triangulate.c: correct error in recent commit triangle-fill-dissolve, need to check if the edges face is removed (happens in rare cases).

Campbell Barton ideasman42 at gmail.com
Fri Aug 23 13:28:33 CEST 2013


Revision: 59415
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=59415
Author:   campbellbarton
Date:     2013-08-23 11:28:33 +0000 (Fri, 23 Aug 2013)
Log Message:
-----------
correct error in recent commit triangle-fill-dissolve, need to check if the edges face is removed (happens in rare cases).

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/operators/bmo_triangulate.c

Modified: trunk/blender/source/blender/bmesh/operators/bmo_triangulate.c
===================================================================
--- trunk/blender/source/blender/bmesh/operators/bmo_triangulate.c	2013-08-23 11:16:52 UTC (rev 59414)
+++ trunk/blender/source/blender/bmesh/operators/bmo_triangulate.c	2013-08-23 11:28:33 UTC (rev 59415)
@@ -137,16 +137,21 @@
 
 	if (use_dissolve) {
 		BMO_ITER (e, &siter, op->slots_out, "geom.out", BM_EDGE) {
-			BMFace *f_new;
-			f_new = BM_faces_join_pair(bm, e->l->f,
-			                           e->l->radial_next->f, e,
-			                           false); /* join faces */
-			if (f_new) {
-				BMO_elem_flag_enable(bm, f_new, ELE_NEW);
-				BM_edge_kill(bm, e);
+			if (LIKELY(e->l)) {  /* in rare cases the edges face will have already been removed from the edge */
+				BMFace *f_new;
+				f_new = BM_faces_join_pair(bm, e->l->f,
+				                           e->l->radial_next->f, e,
+				                           false); /* join faces */
+				if (f_new) {
+					BMO_elem_flag_enable(bm, f_new, ELE_NEW);
+					BM_edge_kill(bm, e);
+				}
+				else {
+					BMO_error_clear(bm);
+				}
 			}
 			else {
-				BMO_error_clear(bm);
+				BM_edge_kill(bm, e);
 			}
 		}
 




More information about the Bf-blender-cvs mailing list