[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [44723] trunk/blender/source/blender/ editors: fix

Campbell Barton ideasman42 at gmail.com
Thu Mar 8 02:22:56 CET 2012


Revision: 44723
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=44723
Author:   campbellbarton
Date:     2012-03-08 01:22:49 +0000 (Thu, 08 Mar 2012)
Log Message:
-----------
fix
- access to a meshs editmesh before the pointer was checked to be a mesh.
- uninitialized memory use in transform (not a problem practically but nice to quiet the error in valgrind).

Modified Paths:
--------------
    trunk/blender/source/blender/editors/mesh/bmesh_tools.c
    trunk/blender/source/blender/editors/transform/transform.c

Modified: trunk/blender/source/blender/editors/mesh/bmesh_tools.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/bmesh_tools.c	2012-03-08 00:23:28 UTC (rev 44722)
+++ trunk/blender/source/blender/editors/mesh/bmesh_tools.c	2012-03-08 01:22:49 UTC (rev 44723)
@@ -2711,12 +2711,14 @@
 static EnumPropertyItem *shape_itemf(bContext *C, PointerRNA *UNUSED(ptr),  PropertyRNA *UNUSED(prop), int *free)
 {	
 	Object *obedit = CTX_data_edit_object(C);
-	Mesh *me = (obedit) ? obedit->data : NULL;
-	BMEditMesh *em = (me) ? me->edit_btmesh : NULL;
+	BMEditMesh *em;
 	EnumPropertyItem *item = NULL;
 	int totitem = 0;
 
-	if (obedit && obedit->type == OB_MESH && CustomData_has_layer(&em->bm->vdata, CD_SHAPEKEY)) {
+	if ((obedit && obedit->type == OB_MESH) &&
+	    (em = BMEdit_FromObject(obedit)) &&
+	    CustomData_has_layer(&em->bm->vdata, CD_SHAPEKEY))
+	{
 		EnumPropertyItem tmp = {0, "", 0, "", ""};
 		int a;
 

Modified: trunk/blender/source/blender/editors/transform/transform.c
===================================================================
--- trunk/blender/source/blender/editors/transform/transform.c	2012-03-08 00:23:28 UTC (rev 44722)
+++ trunk/blender/source/blender/editors/transform/transform.c	2012-03-08 01:22:49 UTC (rev 44723)
@@ -136,15 +136,13 @@
 	vec[2]= 0.0f;
 }
 
-void convertViewVec(TransInfo *t, float *vec, int dx, int dy)
+void convertViewVec(TransInfo *t, float vec[3], int dx, int dy)
 {
-	if(t->spacetype==SPACE_VIEW3D) {
-		if(t->ar->regiontype == RGN_TYPE_WINDOW) {
-			float mval_f[2];
-			mval_f[0]= dx;
-			mval_f[1]= dy;
-			ED_view3d_win_to_delta(t->ar, mval_f, vec);
-		}
+	if ((t->spacetype == SPACE_VIEW3D) && (t->ar->regiontype == RGN_TYPE_WINDOW)) {
+		float mval_f[2];
+		mval_f[0] = dx;
+		mval_f[1] = dy;
+		ED_view3d_win_to_delta(t->ar, mval_f, vec);
 	}
 	else if(t->spacetype==SPACE_IMAGE) {
 		float aspx, aspy;
@@ -172,6 +170,10 @@
 		vec[1]= (v2d->cur.ymax-v2d->cur.ymin)*(dy)/divy;
 		vec[2]= 0.0f;
 	}
+	else {
+		printf("%s: called in an invalid context\n", __func__);
+		zero_v3(vec);
+	}
 }
 
 void projectIntView(TransInfo *t, float *vec, int *adr)




More information about the Bf-blender-cvs mailing list