bugfix: #2254 Curve.appendPoint() gives segfault in PySequence_Check().
Argument tuple not built correctly for CurNurb_appendPointToNurb().
This commit is contained in:
@@ -400,8 +400,11 @@ PyObject *CurNurb_appendPointToNurb( Nurb * nurb, PyObject * args )
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
do we have a list of four floats or a BezTriple?
|
do we have a list of four floats or a BezTriple?
|
||||||
*/
|
*/
|
||||||
PyArg_ParseTuple( args, "O", &pyOb );
|
if( !PyArg_ParseTuple( args, "O", &pyOb ))
|
||||||
|
return( EXPP_ReturnPyObjError
|
||||||
|
( PyExc_RuntimeError,
|
||||||
|
"Internal error parsing arguments" ) );
|
||||||
|
|
||||||
if( BezTriple_CheckPyObject( pyOb ) ) {
|
if( BezTriple_CheckPyObject( pyOb ) ) {
|
||||||
BezTriple *tmp;
|
BezTriple *tmp;
|
||||||
|
|||||||
@@ -1152,6 +1152,8 @@ static PyObject *Curve_appendPoint( BPy_Curve * self, PyObject * args )
|
|||||||
int i;
|
int i;
|
||||||
int nurb_num; /* index of curve we append to */
|
int nurb_num; /* index of curve we append to */
|
||||||
PyObject *coord_args; /* coords for new point */
|
PyObject *coord_args; /* coords for new point */
|
||||||
|
PyObject *retval = NULL;
|
||||||
|
PyObject *valtuple;
|
||||||
Nurb *nurb = self->curve->nurb.first; /* first nurb in Curve */
|
Nurb *nurb = self->curve->nurb.first; /* first nurb in Curve */
|
||||||
|
|
||||||
/* fixme - need to malloc new Nurb */
|
/* fixme - need to malloc new Nurb */
|
||||||
@@ -1175,8 +1177,13 @@ static PyObject *Curve_appendPoint( BPy_Curve * self, PyObject * args )
|
|||||||
"curve index out of range" ) );
|
"curve index out of range" ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
return CurNurb_appendPointToNurb( nurb, coord_args );
|
/* rebuild our arg tuple for appendPointToNurb() */
|
||||||
|
valtuple = Py_BuildValue( "(O)", coord_args );
|
||||||
|
|
||||||
|
retval = CurNurb_appendPointToNurb( nurb, valtuple );
|
||||||
|
Py_DECREF( valtuple );
|
||||||
|
|
||||||
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user