[Bf-blender-cvs] [9748a30] mathutils_bvhtree: Use PyC_AsArray macro
Campbell Barton
noreply at git.blender.org
Thu Jul 16 10:57:04 CEST 2015
Commit: 9748a300cc974be8215906b1b7b64163fc708ccf
Author: Campbell Barton
Date: Thu Jul 16 18:52:02 2015 +1000
Branches: mathutils_bvhtree
https://developer.blender.org/rB9748a300cc974be8215906b1b7b64163fc708ccf
Use PyC_AsArray macro
===================================================================
M source/blender/python/mathutils/mathutils_bvhtree.c
===================================================================
diff --git a/source/blender/python/mathutils/mathutils_bvhtree.c b/source/blender/python/mathutils/mathutils_bvhtree.c
index 46c1610..66d3337 100644
--- a/source/blender/python/mathutils/mathutils_bvhtree.c
+++ b/source/blender/python/mathutils/mathutils_bvhtree.c
@@ -244,7 +244,6 @@ static bool py_BVHTreeDerivedMesh_find_nearest_parse_args(
return true;
}
-
static int dm_tessface_to_poly_index(DerivedMesh *dm, int tessface_index)
{
if (tessface_index != ORIGINDEX_NONE && tessface_index < dm->getNumTessFaces(dm)) {
@@ -810,38 +809,23 @@ static int PyBVHTreeCustom__tp_init(PyBVHTree_Custom *self, PyObject *args, PyOb
tp = tris = MEM_mallocN(sizeof(BVHTriangle) * (size_t)numtris, "BPy BVHTree triangles");
for (i = 0; i < numtris; i++) {
PyObject *py_triverts = PySequence_Fast_GET_ITEM(py_tris_fast, i);
- PyObject *py_triverts_fast = PySequence_Fast(py_triverts, error_prefix);
int j;
- if (py_triverts_fast == NULL) {
- valid = false;
- break;
- }
-
- if (PySequence_Fast_GET_SIZE(py_triverts_fast) != 3) {
- Py_DECREF(py_triverts_fast);
- PyErr_SetString(PyExc_TypeError,
- "One or more of the triangles does not have 3 indices");
+ if (PyC_AsArray((void *)tp->tri, py_triverts, 3, &PyLong_Type, false, error_prefix) == -1) {
valid = false;
break;
}
-
+
for (j = 0; j < 3; j++) {
- const int index = _PyLong_AsInt(PySequence_Fast_GET_ITEM(py_triverts_fast, j));
- if (UNLIKELY(index == -1 && PyErr_Occurred())) {
- valid = false;
- break;
- }
- else if (UNLIKELY((unsigned int)index >= numverts)) {
+ if (UNLIKELY((unsigned int)tp->tri[j] >= (unsigned int)numverts)) {
PyErr_Format(PyExc_ValueError,
- "Index %d out of range [0-%d]", index, numverts);
+ "%s: index %d must be less than %d",
+ error_prefix, tp->tri[j], numverts);
+
valid = false;
break;
}
-
- tp->tri[j] = index;
}
- Py_DECREF(py_triverts_fast);
}
}
More information about the Bf-blender-cvs
mailing list