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
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-03-08 05:22:49 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-03-08 05:22:49 +0400
commit081aa382ed39970f104532cf9f359fb2aa0da5ee (patch)
tree63eeb584e1878b65a56bd77459c77893b19f06aa /source/blender
parent52db32bb53cf4d1b8b098238b1e896e8502027d2 (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.c8
-rw-r--r--source/blender/editors/transform/transform.c18
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)