small mathutils changes.

- fix for returning empty slices (was returning list rather then tuple).
- report invalid type when mathutils_array_parse_fast() fails.
This commit is contained in:
2011-02-04 03:39:06 +00:00
parent 36786c18d7
commit 4be9583894
6 changed files with 8 additions and 7 deletions

View File

@@ -85,6 +85,7 @@ static char M_Mathutils_doc[] =
static int mathutils_array_parse_fast(float *array, int array_min, int array_max, PyObject *value, const char *error_prefix)
{
PyObject *value_fast= NULL;
PyObject *item;
int i, size;
@@ -106,8 +107,8 @@ static int mathutils_array_parse_fast(float *array, int array_min, int array_max
i= size;
do {
i--;
if(((array[i]= PyFloat_AsDouble(PySequence_Fast_GET_ITEM(value_fast, i))) == -1.0) && PyErr_Occurred()) {
PyErr_Format(PyExc_ValueError, "%.200s: sequence index %d is not a float", error_prefix, i);
if(((array[i]= PyFloat_AsDouble((item= PySequence_Fast_GET_ITEM(value_fast, i)))) == -1.0) && PyErr_Occurred()) {
PyErr_Format(PyExc_ValueError, "%.200s: sequence index %d expected a number, found '%.200s' type, ", error_prefix, i, Py_TYPE(item)->tp_name);
Py_DECREF(value_fast);
return -1;
}

View File

@@ -280,7 +280,7 @@ static PyObject *Color_subscript(ColorObject *self, PyObject *item)
return NULL;
if (slicelength <= 0) {
return PyList_New(0);
return PyTuple_New(0);
}
else if (step == 1) {
return Color_slice(self, start, stop);

View File

@@ -446,7 +446,7 @@ static PyObject *Euler_subscript(EulerObject *self, PyObject *item)
return NULL;
if (slicelength <= 0) {
return PyList_New(0);
return PyTuple_New(0);
}
else if (step == 1) {
return Euler_slice(self, start, stop);

View File

@@ -1553,7 +1553,7 @@ static PyObject *Matrix_subscript(MatrixObject* self, PyObject* item)
return NULL;
if (slicelength <= 0) {
return PyList_New(0);
return PyTuple_New(0);
}
else if (step == 1) {
return Matrix_slice(self, start, stop);

View File

@@ -548,7 +548,7 @@ static PyObject *Quaternion_subscript(QuaternionObject *self, PyObject *item)
return NULL;
if (slicelength <= 0) {
return PyList_New(0);
return PyTuple_New(0);
}
else if (step == 1) {
return Quaternion_slice(self, start, stop);

View File

@@ -1324,7 +1324,7 @@ static PyObject *Vector_subscript(VectorObject* self, PyObject* item)
return NULL;
if (slicelength <= 0) {
return PyList_New(0);
return PyTuple_New(0);
}
else if (step == 1) {
return Vector_slice(self, start, stop);