[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