Commit: bc0411f6872ff74cac69b6f6b5a146fca15d4734
Author: Campbell Barton
Date:   Fri Oct 3 13:59:06 2014 +0200
Branches: master
https://developer.blender.org/rBbc0411f6872ff74cac69b6f6b5a146fca15d4734

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 399bea1..cad062a 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); \

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to