Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2007-05-28 20:49:48 +0400
committerCampbell Barton <ideasman42@gmail.com>2007-05-28 20:49:48 +0400
commita8bc1f33974ca4a32b597cb1e0a63b8b3c5cb641 (patch)
tree7ab49b4dcf9bd3dc2d89f634ae0ae44d775e87ea /source
parent3030e93a5ba941cefde52c604d52afd4965aad6b (diff)
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.
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/intern/mesh.c4
-rw-r--r--source/blender/python/api2_2x/Mesh.c4
-rw-r--r--source/blender/src/editobject.c7
3 files changed, 12 insertions, 3 deletions
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 93a3981c4a9..278d49e2198 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -808,6 +808,7 @@ void mball_to_mesh(ListBase *lb, Mesh *me)
}
}
+/* this may fail replacing ob->data, be sure to check ob->type */
void nurbs_to_mesh(Object *ob)
{
Object *ob1;
@@ -847,7 +848,8 @@ void nurbs_to_mesh(Object *ob)
dl= dl->next;
}
if(totvert==0) {
- error("can't convert");
+ /* error("can't convert"); */
+ /* Make Sure you check ob->data is a curve */
return;
}
diff --git a/source/blender/python/api2_2x/Mesh.c b/source/blender/python/api2_2x/Mesh.c
index 30b67426e6a..b64259553bf 100644
--- a/source/blender/python/api2_2x/Mesh.c
+++ b/source/blender/python/api2_2x/Mesh.c
@@ -5704,6 +5704,10 @@ static PyObject *Mesh_getFromObject( BPy_Mesh * self, PyObject * args )
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 */
diff --git a/source/blender/src/editobject.c b/source/blender/src/editobject.c
index 0c42b4c14aa..d362605d63c 100644
--- a/source/blender/src/editobject.c
+++ b/source/blender/src/editobject.c
@@ -2527,8 +2527,11 @@ static void curvetomesh(Object *ob)
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)