Revision: 42131
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42131
Author:   blendix
Date:     2011-11-24 17:06:50 +0000 (Thu, 24 Nov 2011)
Log Message:
-----------
Fix #29366: multires crash with meshes that had verts/edges not connected to 
any face.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.c

Modified: trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.c 2011-11-24 
17:03:44 UTC (rev 42130)
+++ trunk/blender/source/blender/blenkernel/intern/CCGSubSurf.c 2011-11-24 
17:06:50 UTC (rev 42131)
@@ -2301,14 +2301,16 @@
        /* zero */
        for (i=0; i<numEffectedV; i++) {
                CCGVert *v = effectedV[i];
-               VertDataZero(VERT_getCo(v, lvl));
+               if(v->numFaces)
+                       VertDataZero(VERT_getCo(v, lvl));
        }
 
        for (i=0; i<numEffectedE; i++) {
                CCGEdge *e = effectedE[i];
 
-               for (x=0; x<edgeSize; x++)
-                       VertDataZero(EDGE_getCo(e, lvl, x));
+               if(e->numFaces)
+                       for (x=0; x<edgeSize; x++)
+                               VertDataZero(EDGE_getCo(e, lvl, x));
        }
 
        /* add */
@@ -2349,7 +2351,8 @@
        /* average */
        for (i=0; i<numEffectedV; i++) {
                CCGVert *v = effectedV[i];
-               VertDataMulN(VERT_getCo(v, lvl), 1.0f/v->numFaces);
+               if(v->numFaces)
+                       VertDataMulN(VERT_getCo(v, lvl), 1.0f/v->numFaces);
        }
 
        for (i=0; i<numEffectedE; i++) {
@@ -2358,8 +2361,9 @@
                VertDataCopy(EDGE_getCo(e, lvl, 0), VERT_getCo(e->v0, lvl));
                VertDataCopy(EDGE_getCo(e, lvl, edgeSize-1), VERT_getCo(e->v1, 
lvl));
 
-               for (x=1; x<edgeSize-1; x++)
-                       VertDataMulN(EDGE_getCo(e, lvl, x), 1.0f/e->numFaces);
+               if(e->numFaces)
+                       for (x=1; x<edgeSize-1; x++)
+                               VertDataMulN(EDGE_getCo(e, lvl, x), 
1.0f/e->numFaces);
        }
 
        /* copy */

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

Reply via email to