[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [10798] trunk/blender/source/blender: fix for a crash in Blender.Mesh,

Campbell Barton cbarton at metavr.com
Mon May 28 18:49:58 CEST 2007


Revision: 10798
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=10798
Author:   campbellbarton
Date:     2007-05-28 18:49:48 +0200 (Mon, 28 May 2007)

Log Message:
-----------
fix for a crash in Blender.Mesh,
getting curve data from an object failed (with only 1 curve vertex)
Blender.Mesh didnt check this and crashed.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/mesh.c
    trunk/blender/source/blender/python/api2_2x/Mesh.c
    trunk/blender/source/blender/src/editobject.c

Modified: trunk/blender/source/blender/blenkernel/intern/mesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mesh.c	2007-05-28 16:10:40 UTC (rev 10797)
+++ trunk/blender/source/blender/blenkernel/intern/mesh.c	2007-05-28 16:49:48 UTC (rev 10798)
@@ -808,6 +808,7 @@
 	}	
 }
 
+/* this may fail replacing ob->data, be sure to check ob->type */
 void nurbs_to_mesh(Object *ob)
 {
 	Object *ob1;
@@ -847,7 +848,8 @@
 		dl= dl->next;
 	}
 	if(totvert==0) {
-		error("can't convert");
+		/* error("can't convert"); */
+		/* Make Sure you check ob->data is a curve */
 		return;
 	}
 

Modified: trunk/blender/source/blender/python/api2_2x/Mesh.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Mesh.c	2007-05-28 16:10:40 UTC (rev 10797)
+++ trunk/blender/source/blender/python/api2_2x/Mesh.c	2007-05-28 16:49:48 UTC (rev 10798)
@@ -5704,6 +5704,10 @@
 		nurbs_to_mesh( tmpobj );
 		tmpmesh = tmpobj->data;
 		free_libblock_us( &G.main->object, tmpobj );
+		
+		if (ob->type != OB_MESH)
+			return EXPP_ReturnPyObjError( PyExc_RuntimeError,
+				"cant convert curve to mesh. Does the curve have any segments?" );
  		break;
  	case OB_MBALL:
 		/* metaballs don't have modifiers, so just convert to mesh */

Modified: trunk/blender/source/blender/src/editobject.c
===================================================================
--- trunk/blender/source/blender/src/editobject.c	2007-05-28 16:10:40 UTC (rev 10797)
+++ trunk/blender/source/blender/src/editobject.c	2007-05-28 16:49:48 UTC (rev 10798)
@@ -2527,8 +2527,11 @@
 	if(dl==0) makeDispListCurveTypes(ob, 0);		/* force creation */
 
 	nurbs_to_mesh(ob); /* also does users */
-	
-	object_free_modifiers(ob);
+	if (ob->type != OB_MESH) {
+		error("can't convert curve to mesh");
+	} else {
+		object_free_modifiers(ob);
+	}
 }
 
 void convertmenu(void)





More information about the Bf-blender-cvs mailing list