[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60864] trunk/blender/source/blender/bmesh /intern/bmesh_polygon.c: fix [#37145] "Triangulate Face" crash in specific scene

Dalai Felinto dfelinto at gmail.com
Sat Oct 19 23:20:50 CEST 2013


Revision: 60864
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60864
Author:   dfelinto
Date:     2013-10-19 21:20:50 +0000 (Sat, 19 Oct 2013)
Log Message:
-----------
fix [#37145] "Triangulate Face" crash in specific scene
it was asserting if the last edge faces were already all set

Modified Paths:
--------------
    trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c

Modified: trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c
===================================================================
--- trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c	2013-10-19 17:45:58 UTC (rev 60863)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c	2013-10-19 21:20:50 UTC (rev 60864)
@@ -974,26 +974,25 @@
 
 					BLI_assert(ok);
 
-					if (i == edge_array_len - 1) {
-						if (FACE_USED_TEST(f_a) == false) {
+					if (FACE_USED_TEST(f_a) == false) {
+						FACE_USED_SET(f_a);
+
+						if (nf_i < edge_array_len) {
+							r_faces_new[nf_i++] = f_a;
+						} else {
 							f_new = f_a;
+							break;
 						}
-						else if (FACE_USED_TEST(f_b) == false) {
-							f_new = f_b;
-						}
-						else {
-							BLI_assert(false);
-						}
 					}
-					else {
-						if (FACE_USED_TEST(f_a) == false) {
-							FACE_USED_SET(f_a);
-							r_faces_new[nf_i++] = f_a;
-						}
 
-						if (FACE_USED_TEST(f_b) == false) {
-							FACE_USED_SET(f_b);
+					if (FACE_USED_TEST(f_b) == false) {
+						FACE_USED_SET(f_b);
+
+						if (nf_i < edge_array_len) {
 							r_faces_new[nf_i++] = f_b;
+						} else {
+							f_new = f_b;
+							break;
 						}
 					}
 				}




More information about the Bf-blender-cvs mailing list