[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60806] trunk/blender/source/blender/bmesh /intern/bmesh_polygon.c: correct BM_edge_face_pair() being called inside BLI_assert() - this needed to run every time.

Campbell Barton ideasman42 at gmail.com
Thu Oct 17 00:07:17 CEST 2013


Revision: 60806
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60806
Author:   campbellbarton
Date:     2013-10-16 22:07:16 +0000 (Wed, 16 Oct 2013)
Log Message:
-----------
correct BM_edge_face_pair() being called inside BLI_assert() - this needed to run every time.
also other minor changes.

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-16 17:58:00 UTC (rev 60805)
+++ trunk/blender/source/blender/bmesh/intern/bmesh_polygon.c	2013-10-16 22:07:16 UTC (rev 60806)
@@ -814,7 +814,6 @@
  *
  * \note use_tag tags new flags and edges.
  */
-#define SF_EDGE_IS_BOUNDARY 0xff
 void BM_face_triangulate(BMesh *bm, BMFace *f,
                          BMFace **r_faces_new,
                          MemArena *sf_arena,
@@ -827,6 +826,8 @@
 	BMEdge **edge_array;
 	int edge_array_len;
 
+#define SF_EDGE_IS_BOUNDARY 0xff
+
 	BLI_assert(BM_face_is_normal_valid(f));
 
 
@@ -959,35 +960,47 @@
 				 * we need to re-populate the r_faces_new array
 				 * with the new faces
 				 */
-				BMEdge *e;
-				BMFace *fa, *fb;
 				int i;
 
+
+#define FACE_USED_TEST(f) (BM_elem_index_get(f) == -2)
+#define FACE_USED_SET(f)   BM_elem_index_set(f,    -2)
+
 				nf_i = 0;
 				for (i = 0; i < edge_array_len; i++) {
-					e = edge_array[i];
-					BLI_assert(BM_edge_face_pair(e, &fa, &fb));
+					BMFace *f_a, *f_b;
+					BMEdge *e = edge_array[i];
+					const bool ok = BM_edge_face_pair(e, &f_a, &f_b);
 
+					BLI_assert(ok);
+
 					if (i == edge_array_len - 1) {
-						if (BM_elem_index_get(fa) != -2)
-							f_new = fa;
-						else if (BM_elem_index_get(fb) != -2)
-							f_new = fb;
-						else
+						if (FACE_USED_TEST(f_a) == false) {
+							f_new = f_a;
+						}
+						else if (FACE_USED_TEST(f_b) == false) {
+							f_new = f_b;
+						}
+						else {
 							BLI_assert(false);
+						}
 					}
 					else {
-						if (BM_elem_index_get(fa) != -2) {
-							r_faces_new[nf_i++] = fa;
-							BM_elem_index_set(fa, -2);
+						if (FACE_USED_TEST(f_a) == false) {
+							FACE_USED_SET(f_a);
+							r_faces_new[nf_i++] = f_a;
 						}
 
-						if (BM_elem_index_get(fb) != -2) {
-							r_faces_new[nf_i++] = fb;
-							BM_elem_index_set(fb, -2);
+						if (FACE_USED_TEST(f_b) == false) {
+							FACE_USED_SET(f_b);
+							r_faces_new[nf_i++] = f_b;
 						}
 					}
 				}
+
+#undef FACE_USED_TEST
+#undef FACE_USED_SET
+
 				/* nf_i doesn't include the last face */
 				BLI_assert(nf_i == orig_f_len - 3);
 
@@ -1001,6 +1014,9 @@
 		/* garbage collection */
 		BLI_scanfill_end_arena(&sf_ctx, sf_arena);
 	}
+
+#undef SF_EDGE_IS_BOUNDARY
+
 }
 
 /**




More information about the Bf-blender-cvs mailing list