- transform's createTransCurveVerts was using both CTX_data_edit_object(C) and t->obedit, now only use t->obedit.

- freeing bez-triple handle data was being done in a loop for many types which don't support bezier handle data.
This commit is contained in:
Campbell Barton 2012-09-28 14:51:33 +00:00
parent b0fb857ef2
commit 41965e197c
2 changed files with 15 additions and 11 deletions

@ -1334,10 +1334,9 @@ static TransDataCurveHandleFlags *initTransDataCurveHandles(TransData *td, struc
return hdata;
}
static void createTransCurveVerts(bContext *C, TransInfo *t)
static void createTransCurveVerts(TransInfo *t)
{
Object *obedit = CTX_data_edit_object(C);
Curve *cu = obedit->data;
Curve *cu = t->obedit->data;
TransData *td = NULL;
Nurb *nu;
BezTriple *bezt;
@ -1935,9 +1934,9 @@ static void VertsToTransData(TransInfo *t, TransData *td, TransDataExtension *tx
}
}
static void createTransEditVerts(bContext *C, TransInfo *t)
static void createTransEditVerts(TransInfo *t)
{
ToolSettings *ts = CTX_data_tool_settings(C);
ToolSettings *ts = t->scene->toolsettings;
TransData *tob = NULL;
TransDataExtension *tx = NULL;
BMEditMesh *em = BMEdit_FromObject(t->obedit);
@ -6425,10 +6424,10 @@ void createTransData(bContext *C, TransInfo *t)
else if (t->obedit) {
t->ext = NULL;
if (t->obedit->type == OB_MESH) {
createTransEditVerts(C, t);
createTransEditVerts(t);
}
else if (ELEM(t->obedit->type, OB_CURVE, OB_SURF)) {
createTransCurveVerts(C, t);
createTransCurveVerts(t);
}
else if (t->obedit->type == OB_LATTICE) {
createTransLatticeVerts(t);

@ -1302,12 +1302,17 @@ void postTrans(bContext *C, TransInfo *t)
/* postTrans can be called when nothing is selected, so data is NULL already */
if (t->data) {
int a;
/* free data malloced per trans-data */
for (a = 0, td = t->data; a < t->total; a++, td++) {
if (td->flag & TD_BEZTRIPLE)
MEM_freeN(td->hdata);
if ((t->obedit && ELEM(t->obedit->type, OB_CURVE, OB_SURF)) ||
(t->spacetype == SPACE_IPO))
{
int a;
for (a = 0, td = t->data; a < t->total; a++, td++) {
if (td->flag & TD_BEZTRIPLE) {
MEM_freeN(td->hdata);
}
}
}
MEM_freeN(t->data);
}