[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42131] trunk/blender/source/blender/ blenkernel/intern/CCGSubSurf.c: Fix #29366: multires crash with meshes that had verts/edges not connected to any face.

Brecht Van Lommel brechtvanlommel at pandora.be
Thu Nov 24 18:06:51 CET 2011


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 */




More information about the Bf-blender-cvs mailing list