[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34516] trunk/blender/source/blender/ makesrna/intern/rna_mesh.c: Bullet-proofing mesh vertex group RNA wrapping, after double checking

Joshua Leung aligorith at gmail.com
Wed Jan 26 23:31:15 CET 2011


Revision: 34516
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34516
Author:   aligorith
Date:     2011-01-26 22:31:14 +0000 (Wed, 26 Jan 2011)
Log Message:
-----------
Bullet-proofing mesh vertex group RNA wrapping, after double checking
on whether vertexgroup weight animation worked

Modified Paths:
--------------
    trunk/blender/source/blender/makesrna/intern/rna_mesh.c

Modified: trunk/blender/source/blender/makesrna/intern/rna_mesh.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_mesh.c	2011-01-26 22:16:58 UTC (rev 34515)
+++ trunk/blender/source/blender/makesrna/intern/rna_mesh.c	2011-01-26 22:31:14 UTC (rev 34516)
@@ -961,10 +961,29 @@
 	MDeformVert *dvert;
 	int a, b;
 	
-	for(a=0, dvert=me->dvert; a<me->totvert; a++, dvert++)
-		for(b=0; b<dvert->totweight; b++)
+	/* sanity check: make sure that mesh pointer is valid */
+	if (me == NULL) 
+		return NULL;
+	else if (GS(me->id.name) != ID_ME) {
+		/* if object pointer, try to resolve the object's data to mesh pointer */
+		if (GS(me->id.name) == ID_OB) {
+			Object *ob = (Object *)me;
+			
+			if (ob->type == OB_MESH)
+				me = (Mesh *)ob->data;
+			else
+				return NULL; /* nothing can be done */
+		}
+		else
+			return NULL; /* nothing can be done */
+	}
+	
+	for(a=0, dvert=me->dvert; a<me->totvert; a++, dvert++) {
+		for(b=0; b<dvert->totweight; b++) {
 			if(dw == &dvert->dw[b])
 				return BLI_sprintfN("vertices[%d].groups[%d]", a, b);
+		}
+	}
 
 	return NULL;
 }




More information about the Bf-blender-cvs mailing list