[Bf-blender-cvs] [886cdad] blender-v2.72-release: Fix for 2-sided faces in array modifier

Campbell Barton noreply at git.blender.org
Fri Oct 3 15:25:01 CEST 2014


Commit: 886cdaddbef29c5dc95ccf58f15074abb4622188
Author: Campbell Barton
Date:   Fri Oct 3 13:59:06 2014 +0200
Branches: blender-v2.72-release
https://developer.blender.org/rB886cdaddbef29c5dc95ccf58f15074abb4622188

Fix for 2-sided faces in array modifier

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

M	source/blender/blenkernel/intern/cdderivedmesh.c
M	source/blender/blenlib/BLI_stackdefines.h

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

diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index 72de934..3a8fe55 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -3014,10 +3014,17 @@ DerivedMesh *CDDM_merge_verts(DerivedMesh *dm, const int *vtargetmap, const int
 		if (UNLIKELY(c == 0)) {
 			continue;
 		}
+		else if (UNLIKELY(c < 3)) {
+			STACK_DISCARD(oldl, c);
+			STACK_DISCARD(mloop, c);
+			continue;
+		}
+
 
 		mp_new = STACK_PUSH_RET_PTR(mpoly);
 		*mp_new = *mp;
 		mp_new->totloop = c;
+		BLI_assert(mp_new->totloop >= 3);
 		mp_new->loopstart = STACK_SIZE(mloop) - c;
 		
 		STACK_PUSH(oldp, i);
diff --git a/source/blender/blenlib/BLI_stackdefines.h b/source/blender/blenlib/BLI_stackdefines.h
index da9bf5e..864a770 100644
--- a/source/blender/blenlib/BLI_stackdefines.h
+++ b/source/blender/blenlib/BLI_stackdefines.h
@@ -64,6 +64,13 @@
 			stack[_i] = stack[_##stack##_index]; \
 		} \
 	} (void)0
+#define STACK_DISCARD(stack, n) \
+	{ \
+		const unsigned int _n = n; \
+		BLI_assert(_##stack##_index >= _n); \
+		(void)stack; \
+		_##stack##_index -= _n; \
+	} (void)0
 #ifdef __GNUC__
 #define STACK_SWAP(stack_a, stack_b) { \
 	SWAP(typeof(stack_a), stack_a, stack_b); \




More information about the Bf-blender-cvs mailing list