diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-03-08 05:22:49 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-03-08 05:22:49 +0400 |
commit | 081aa382ed39970f104532cf9f359fb2aa0da5ee (patch) | |
tree | 63eeb584e1878b65a56bd77459c77893b19f06aa /source/blender | |
parent | 52db32bb53cf4d1b8b098238b1e896e8502027d2 (diff) |
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).
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/editors/mesh/bmesh_tools.c | 8 | ||||
-rw-r--r-- | source/blender/editors/transform/transform.c | 18 |
2 files changed, 15 insertions, 11 deletions
diff --git a/source/blender/editors/mesh/bmesh_tools.c b/source/blender/editors/mesh/bmesh_tools.c index d1a8b2ae896..858e39defd0 100644 --- a/source/blender/editors/mesh/bmesh_tools.c +++ b/source/blender/editors/mesh/bmesh_tools.c @@ -2711,12 +2711,14 @@ static int blend_from_shape_exec(bContext *C, wmOperator *op) 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; diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 7bd0aaf89db..64c4cacb8b6 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -136,15 +136,13 @@ static void convertViewVec2D(View2D *v2d, float vec[3], int dx, int dy) 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 @@ void convertViewVec(TransInfo *t, float *vec, int dx, int dy) 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) |