[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