Revision: 34736
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34736
Author:   campbellbarton
Date:     2011-02-09 04:45:53 +0000 (Wed, 09 Feb 2011)
Log Message:
-----------
fix [#25968] Crash on changing merge distance in array modifier with edgesplit 
modifier in chain

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/mesh.c
    trunk/blender/source/blender/modifiers/intern/MOD_array.c

Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c       2011-02-09 
03:49:59 UTC (rev 34735)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c       2011-02-09 
04:45:53 UTC (rev 34736)
@@ -456,6 +456,32 @@
                nr--;
        }
 
+       /* check corrupt cases, bowtie geometry, cant handle these because edge 
data wont exist so just return 0 */
+       if(nr==3) {
+               if(
+               /* real edges */
+                       mface->v1==mface->v2 ||
+                       mface->v2==mface->v3 ||
+                       mface->v3==mface->v1
+               ) {
+                       return 0;
+               }
+       }
+       else if(nr==4) {
+               if(
+               /* real edges */
+                       mface->v1==mface->v2 ||
+                       mface->v2==mface->v3 ||
+                       mface->v3==mface->v4 ||
+                       mface->v4==mface->v1 ||
+               /* across the face */
+                       mface->v1==mface->v3 ||
+                       mface->v2==mface->v4
+               ) {
+                       return 0;
+               }
+       }
+
        /* prevent a zero at wrong index location */
        if(nr==3) {
                if(mface->v3==0) {

Modified: trunk/blender/source/blender/modifiers/intern/MOD_array.c
===================================================================
--- trunk/blender/source/blender/modifiers/intern/MOD_array.c   2011-02-09 
03:49:59 UTC (rev 34735)
+++ trunk/blender/source/blender/modifiers/intern/MOD_array.c   2011-02-09 
04:45:53 UTC (rev 34736)
@@ -546,12 +546,10 @@
                                  if (inMF.v4)
                                          mf2->v4 = calc_mapping(indexMap, 
inMF.v4, j);
 
-                                 test_index_face_maxvert(mf2, 
&result->faceData, numFaces, inMF.v4?4:3, numVerts);
                                  numFaces++;
 
                                  /* if the face has fewer than 3 vertices, 
don't create it */
-                                 if(mf2->v3 == 0 || (mf2->v1 && (mf2->v1 == 
mf2->v3 || mf2->v1 ==
-                                                                mf2->v4))) {
+                                 if(test_index_face_maxvert(mf2, 
&result->faceData, numFaces-1, inMF.v4?4:3, numVerts) < 3) {
                                          numFaces--;
                                          DM_free_face_data(result, numFaces, 
1);
                                                                 }

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

Reply via email to