[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [45489] trunk/blender/source/blender/ editors/mesh/editmesh_knife.c: Fix bug 30866: prevent 2-sided polygons from knife cuts.

Howard Trickey howard.trickey at gmail.com
Mon Apr 9 14:50:44 CEST 2012


Revision: 45489
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=45489
Author:   howardt
Date:     2012-04-09 12:50:43 +0000 (Mon, 09 Apr 2012)
Log Message:
-----------
Fix bug 30866: prevent 2-sided polygons from knife cuts.
Blender bmesh code assumes there aren't any of those, so crashed
when trying to delete a vertex involved in one.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/editmesh_knife.c

Modified: trunk/blender/source/blender/editors/mesh/editmesh_knife.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_knife.c	2012-04-09 11:38:43 UTC (rev 45488)
+++ trunk/blender/source/blender/editors/mesh/editmesh_knife.c	2012-04-09 12:50:43 UTC (rev 45489)
@@ -2397,7 +2397,12 @@
 	BLI_assert(i == nco);
 	lnew = NULL;
 	if (nco == 0) {
-		*newface = BM_face_split(bm, f, v1, v2, &lnew, NULL, TRUE);
+		/* Want to prevent creating two-sided polygons */
+		if (BM_edge_exists(v1, v2)) {
+			*newface = NULL;
+		} else {
+			*newface = BM_face_split(bm, f, v1, v2, &lnew, NULL, TRUE);
+		}
 	}
 	else {
 		fnew = BM_face_split_n(bm, f, v1, v2, cos, nco, &lnew, NULL);
@@ -2430,7 +2435,6 @@
 	while ((chain = find_chain(kcd, kfedges)) != NULL) {
 		knife_make_chain_cut(kcd, f, chain, &fnew);
 		if (!fnew) {
-			BLI_assert("!knife failed chain cut");
 			return;
 		}
 




More information about the Bf-blender-cvs mailing list