[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [49462] trunk/blender/source/blender/ editors/object/object_modifier.c: fix some more crashes when running skin operators on a mesh with no skin layer

Campbell Barton ideasman42 at gmail.com
Wed Aug 1 17:04:11 CEST 2012


Revision: 49462
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49462
Author:   campbellbarton
Date:     2012-08-01 15:04:10 +0000 (Wed, 01 Aug 2012)
Log Message:
-----------
fix some more crashes when running skin operators on a mesh with no skin layer

Modified Paths:
--------------
    trunk/blender/source/blender/editors/object/object_modifier.c

Modified: trunk/blender/source/blender/editors/object/object_modifier.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_modifier.c	2012-08-01 15:02:09 UTC (rev 49461)
+++ trunk/blender/source/blender/editors/object/object_modifier.c	2012-08-01 15:04:10 UTC (rev 49462)
@@ -1518,8 +1518,8 @@
 static int skin_root_mark_exec(bContext *C, wmOperator *UNUSED(op))
 {
 	Object *ob = CTX_data_edit_object(C);
-	Mesh *me = ob->data;
-	BMesh *bm = me->edit_btmesh->bm;
+	BMEditMesh *em = BMEdit_FromObject(ob);
+	BMesh *bm = em->bm;
 	BMVert *bm_vert;
 	BMIter bm_iter;
 	GHash *visited;
@@ -1574,12 +1574,16 @@
 static int skin_loose_mark_clear_exec(bContext *C, wmOperator *op)
 {
 	Object *ob = CTX_data_edit_object(C);
-	Mesh *me = ob->data;
-	BMesh *bm = me->edit_btmesh->bm;
+	BMEditMesh *em = BMEdit_FromObject(ob);
+	BMesh *bm = em->bm;
 	BMVert *bm_vert;
 	BMIter bm_iter;
 	SkinLooseAction action = RNA_enum_get(op->ptr, "action");
 
+	if (!CustomData_has_layer(&bm->vdata, CD_MVERT_SKIN)) {
+		return OPERATOR_CANCELLED;
+	}
+
 	BM_ITER_MESH (bm_vert, &bm_iter, bm, BM_VERTS_OF_MESH) {
 		if (bm_vert->head.hflag & BM_ELEM_SELECT) {
 			MVertSkin *vs = CustomData_bmesh_get(&bm->vdata,
@@ -1628,11 +1632,15 @@
 static int skin_radii_equalize_exec(bContext *C, wmOperator *UNUSED(op))
 {
 	Object *ob = CTX_data_edit_object(C);
-	Mesh *me = ob->data;
-	BMesh *bm = me->edit_btmesh->bm;
+	BMEditMesh *em = BMEdit_FromObject(ob);
+	BMesh *bm = em->bm;
 	BMVert *bm_vert;
 	BMIter bm_iter;
 
+	if (!CustomData_has_layer(&bm->vdata, CD_MVERT_SKIN)) {
+		return OPERATOR_CANCELLED;
+	}
+
 	BM_ITER_MESH (bm_vert, &bm_iter, bm, BM_VERTS_OF_MESH) {
 		if (bm_vert->head.hflag & BM_ELEM_SELECT) {
 			MVertSkin *vs = CustomData_bmesh_get(&bm->vdata,




More information about the Bf-blender-cvs mailing list