Fix crash in freestyle vector parsing (hard to believe nobody noticed)

Vectors were being assigned as an array of classes in Vec2f_ptr_from_PyObject and similar functions,
rather then assigning a number to each axis.
This commit is contained in:
Campbell Barton 2013-12-17 18:01:15 +11:00
parent 61fb34a622
commit f1a989f9c3
6 changed files with 39 additions and 39 deletions

View File

@ -512,7 +512,7 @@ Nature::EdgeNature EdgeNature_from_BPy_Nature(PyObject *obj)
return static_cast<Nature::EdgeNature>(PyLong_AsLong(obj));
}
bool Vec2f_ptr_from_PyObject(PyObject *obj, Vec2f *vec)
bool Vec2f_ptr_from_PyObject(PyObject *obj, Vec2f &vec)
{
if (Vec2f_ptr_from_Vector(obj, vec))
return true;
@ -523,7 +523,7 @@ bool Vec2f_ptr_from_PyObject(PyObject *obj, Vec2f *vec)
return false;
}
bool Vec3f_ptr_from_PyObject(PyObject *obj, Vec3f *vec)
bool Vec3f_ptr_from_PyObject(PyObject *obj, Vec3f &vec)
{
if (Vec3f_ptr_from_Vector(obj, vec))
return true;
@ -536,7 +536,7 @@ bool Vec3f_ptr_from_PyObject(PyObject *obj, Vec3f *vec)
return false;
}
bool Vec3r_ptr_from_PyObject(PyObject *obj, Vec3r *vec)
bool Vec3r_ptr_from_PyObject(PyObject *obj, Vec3r &vec)
{
if (Vec3r_ptr_from_Vector(obj, vec))
return true;
@ -549,7 +549,7 @@ bool Vec3r_ptr_from_PyObject(PyObject *obj, Vec3r *vec)
return false;
}
bool Vec2f_ptr_from_Vector(PyObject *obj, Vec2f *vec)
bool Vec2f_ptr_from_Vector(PyObject *obj, Vec2f &vec)
{
if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 2)
return false;
@ -560,7 +560,7 @@ bool Vec2f_ptr_from_Vector(PyObject *obj, Vec2f *vec)
return true;
}
bool Vec3f_ptr_from_Vector(PyObject *obj, Vec3f *vec)
bool Vec3f_ptr_from_Vector(PyObject *obj, Vec3f &vec)
{
if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 3)
return false;
@ -572,7 +572,7 @@ bool Vec3f_ptr_from_Vector(PyObject *obj, Vec3f *vec)
return true;
}
bool Vec3r_ptr_from_Vector(PyObject *obj, Vec3r *vec)
bool Vec3r_ptr_from_Vector(PyObject *obj, Vec3r &vec)
{
if (!VectorObject_Check(obj) || ((VectorObject *)obj)->size != 3)
return false;
@ -584,7 +584,7 @@ bool Vec3r_ptr_from_Vector(PyObject *obj, Vec3r *vec)
return true;
}
bool Vec3f_ptr_from_Color(PyObject *obj, Vec3f *vec)
bool Vec3f_ptr_from_Color(PyObject *obj, Vec3f &vec)
{
if (!ColorObject_Check(obj))
return false;
@ -596,7 +596,7 @@ bool Vec3f_ptr_from_Color(PyObject *obj, Vec3f *vec)
return true;
}
bool Vec3r_ptr_from_Color(PyObject *obj, Vec3r *vec)
bool Vec3r_ptr_from_Color(PyObject *obj, Vec3r &vec)
{
if (!ColorObject_Check(obj))
return false;
@ -620,7 +620,7 @@ static bool float_array_from_PyList(PyObject *obj, float *v, int n)
return 1;
}
bool Vec2f_ptr_from_PyList(PyObject *obj, Vec2f *vec)
bool Vec2f_ptr_from_PyList(PyObject *obj, Vec2f &vec)
{
float v[2];
@ -633,7 +633,7 @@ bool Vec2f_ptr_from_PyList(PyObject *obj, Vec2f *vec)
return true;
}
bool Vec3f_ptr_from_PyList(PyObject *obj, Vec3f *vec)
bool Vec3f_ptr_from_PyList(PyObject *obj, Vec3f &vec)
{
float v[3];
@ -647,7 +647,7 @@ bool Vec3f_ptr_from_PyList(PyObject *obj, Vec3f *vec)
return true;
}
bool Vec3r_ptr_from_PyList(PyObject *obj, Vec3r *vec)
bool Vec3r_ptr_from_PyList(PyObject *obj, Vec3r &vec)
{
float v[3];
@ -673,7 +673,7 @@ static bool float_array_from_PyTuple(PyObject *obj, float *v, int n)
return 1;
}
bool Vec2f_ptr_from_PyTuple(PyObject *obj, Vec2f *vec)
bool Vec2f_ptr_from_PyTuple(PyObject *obj, Vec2f &vec)
{
float v[2];
@ -686,7 +686,7 @@ bool Vec2f_ptr_from_PyTuple(PyObject *obj, Vec2f *vec)
return true;
}
bool Vec3f_ptr_from_PyTuple(PyObject *obj, Vec3f *vec)
bool Vec3f_ptr_from_PyTuple(PyObject *obj, Vec3f &vec)
{
float v[3];
@ -700,7 +700,7 @@ bool Vec3f_ptr_from_PyTuple(PyObject *obj, Vec3f *vec)
return true;
}
bool Vec3r_ptr_from_PyTuple(PyObject *obj, Vec3r *vec)
bool Vec3r_ptr_from_PyTuple(PyObject *obj, Vec3r &vec)
{
float v[3];

View File

@ -150,20 +150,20 @@ bool bool_from_PyBool(PyObject *b);
IntegrationType IntegrationType_from_BPy_IntegrationType(PyObject *obj);
Stroke::MediumType MediumType_from_BPy_MediumType(PyObject *obj);
Nature::EdgeNature EdgeNature_from_BPy_Nature(PyObject *obj);
bool Vec2f_ptr_from_PyObject(PyObject *obj, Vec2f *vec);
bool Vec3f_ptr_from_PyObject(PyObject *obj, Vec3f *vec);
bool Vec3r_ptr_from_PyObject(PyObject *obj, Vec3r *vec);
bool Vec2f_ptr_from_Vector(PyObject *obj, Vec2f *vec);
bool Vec3f_ptr_from_Vector(PyObject *obj, Vec3f *vec);
bool Vec3r_ptr_from_Vector(PyObject *obj, Vec3r *vec);
bool Vec3f_ptr_from_Color(PyObject *obj, Vec3f *vec);
bool Vec3r_ptr_from_Color(PyObject *obj, Vec3r *vec);
bool Vec2f_ptr_from_PyList(PyObject *obj, Vec2f *vec);
bool Vec3f_ptr_from_PyList(PyObject *obj, Vec3f *vec);
bool Vec3r_ptr_from_PyList(PyObject *obj, Vec3r *vec);
bool Vec2f_ptr_from_PyTuple(PyObject *obj, Vec2f *vec);
bool Vec3f_ptr_from_PyTuple(PyObject *obj, Vec3f *vec);
bool Vec3r_ptr_from_PyTuple(PyObject *obj, Vec3r *vec);
bool Vec2f_ptr_from_PyObject(PyObject *obj, Vec2f &vec);
bool Vec3f_ptr_from_PyObject(PyObject *obj, Vec3f &vec);
bool Vec3r_ptr_from_PyObject(PyObject *obj, Vec3r &vec);
bool Vec2f_ptr_from_Vector(PyObject *obj, Vec2f &vec);
bool Vec3f_ptr_from_Vector(PyObject *obj, Vec3f &vec);
bool Vec3r_ptr_from_Vector(PyObject *obj, Vec3r &vec);
bool Vec3f_ptr_from_Color(PyObject *obj, Vec3f &vec);
bool Vec3r_ptr_from_Color(PyObject *obj, Vec3r &vec);
bool Vec2f_ptr_from_PyList(PyObject *obj, Vec2f &vec);
bool Vec3f_ptr_from_PyList(PyObject *obj, Vec3f &vec);
bool Vec3r_ptr_from_PyList(PyObject *obj, Vec3r &vec);
bool Vec2f_ptr_from_PyTuple(PyObject *obj, Vec2f &vec);
bool Vec3f_ptr_from_PyTuple(PyObject *obj, Vec3f &vec);
bool Vec3r_ptr_from_PyTuple(PyObject *obj, Vec3r &vec);
bool float_array_from_PyObject(PyObject *obj, float *v, int n);

View File

@ -136,7 +136,7 @@ static PyObject *FrsNoise_turbulence2(BPy_FrsNoise *self, PyObject *args, PyObje
if (!PyArg_ParseTupleAndKeywords(args, kwds, "Off|I", (char **)kwlist, &obj1, &f2, &f3, &i))
return NULL;
if (!Vec2f_ptr_from_PyObject(obj1, &vec)) {
if (!Vec2f_ptr_from_PyObject(obj1, vec)) {
PyErr_SetString(PyExc_TypeError, "argument 1 must be a 2D vector (either a list of 2 elements or Vector)");
return NULL;
}
@ -170,7 +170,7 @@ static PyObject *FrsNoise_turbulence3(BPy_FrsNoise *self, PyObject *args, PyObje
if (!PyArg_ParseTupleAndKeywords(args, kwds, "Off|I", (char **)kwlist, &obj1, &f2, &f3, &i))
return NULL;
if (!Vec3f_ptr_from_PyObject(obj1, &vec)) {
if (!Vec3f_ptr_from_PyObject(obj1, vec)) {
PyErr_SetString(PyExc_TypeError, "argument 1 must be a 3D vector (either a list of 3 elements or Vector)");
return NULL;
}
@ -216,7 +216,7 @@ static PyObject *FrsNoise_smoothNoise2(BPy_FrsNoise *self, PyObject *args, PyObj
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &obj))
return NULL;
if (!Vec2f_ptr_from_PyObject(obj, &vec)) {
if (!Vec2f_ptr_from_PyObject(obj, vec)) {
PyErr_SetString(PyExc_TypeError, "argument 1 must be a 2D vector (either a list of 2 elements or Vector)");
return NULL;
}
@ -242,7 +242,7 @@ static PyObject *FrsNoise_smoothNoise3(BPy_FrsNoise *self, PyObject *args, PyObj
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &obj))
return NULL;
if (!Vec3f_ptr_from_PyObject(obj, &vec)) {
if (!Vec3f_ptr_from_PyObject(obj, vec)) {
PyErr_SetString(PyExc_TypeError, "argument 1 must be a 3D vector (either a list of 3 elements or Vector)");
return NULL;
}

View File

@ -315,7 +315,7 @@ static PyObject * StrokeAttribute_set_attribute_vec2(BPy_StrokeAttribute *self,
if (!PyArg_ParseTupleAndKeywords(args, kwds, "sO", (char **)kwlist, &s, &obj))
return NULL;
if (!Vec2f_ptr_from_PyObject(obj, &vec)) {
if (!Vec2f_ptr_from_PyObject(obj, vec)) {
PyErr_SetString(PyExc_TypeError, "argument 2 must be a 2D vector (either a list of 2 elements or Vector)");
return NULL;
}
@ -344,7 +344,7 @@ static PyObject * StrokeAttribute_set_attribute_vec3(BPy_StrokeAttribute *self,
if (!PyArg_ParseTupleAndKeywords(args, kwds, "sO", (char **)kwlist, &s, &obj))
return NULL;
if (!Vec3f_ptr_from_PyObject(obj, &vec)) {
if (!Vec3f_ptr_from_PyObject(obj, vec)) {
PyErr_SetString(PyExc_TypeError, "argument 2 must be a 3D vector (either a list of 3 elements or Vector)");
return NULL;
}

View File

@ -252,13 +252,13 @@ int Director_BPy_UnaryFunction0D___call__(void *uf0D, PyObject *obj, Interface0D
}
else if (BPy_UnaryFunction0DVec2f_Check(obj)) {
Vec2f vec;
if (!Vec2f_ptr_from_Vector(result, &vec))
if (!Vec2f_ptr_from_Vector(result, vec))
return -1;
((UnaryFunction0D<Vec2f> *)uf0D)->result = vec;
}
else if (BPy_UnaryFunction0DVec3f_Check(obj)) {
Vec3f vec;
if (!Vec3f_ptr_from_Vector(result, &vec))
if (!Vec3f_ptr_from_Vector(result, vec))
return -1;
((UnaryFunction0D<Vec3f> *)uf0D)->result = vec;
}
@ -304,13 +304,13 @@ int Director_BPy_UnaryFunction1D___call__(void *uf1D, PyObject *obj, Interface1D
}
else if (BPy_UnaryFunction1DVec2f_Check(obj)) {
Vec2f vec;
if (!Vec2f_ptr_from_Vector(result, &vec))
if (!Vec2f_ptr_from_Vector(result, vec))
return -1;
((UnaryFunction1D<Vec2f> *)uf1D)->result = vec;
}
else if (BPy_UnaryFunction1DVec3f_Check(obj)) {
Vec3f vec;
if (!Vec3f_ptr_from_Vector(result, &vec))
if (!Vec3f_ptr_from_Vector(result, vec))
return -1;
((UnaryFunction1D<Vec3f> *)uf1D)->result = vec;
}

View File

@ -111,7 +111,7 @@ static PyObject *SVertex_add_normal(BPy_SVertex *self, PyObject *args, PyObject
if (!PyArg_ParseTupleAndKeywords(args, kwds, "O", (char **)kwlist, &py_normal))
return NULL;
if (!Vec3r_ptr_from_PyObject(py_normal, &n)) {
if (!Vec3r_ptr_from_PyObject(py_normal, n)) {
PyErr_SetString(PyExc_TypeError, "argument 1 must be a 3D vector (either a list of 3 elements or Vector)");
return NULL;
}