Use PyC_ParseBool to parse bools

This could cause problems since they could be any int,
then passed directly to internal functions that assume bools.
This commit is contained in:
2015-08-04 18:34:20 +10:00
parent 62c8f46ab6
commit cff288cf3a
9 changed files with 130 additions and 74 deletions

View File

@@ -42,6 +42,8 @@
#include "BLI_math.h"
#include "BLI_utildefines.h"
#include "../generic/py_capi_utils.h"
#include "../generic/python_utildefines.h"
/*-------------------------DOC STRINGS ---------------------------*/
@@ -77,12 +79,14 @@ static PyObject *M_Geometry_intersect_ray_tri(PyObject *UNUSED(self), PyObject *
PyObject *py_ray, *py_ray_off, *py_tri[3];
float dir[3], orig[3], tri[3][3], e1[3], e2[3], pvec[3], tvec[3], qvec[3];
float det, inv_det, u, v, t;
int clip = 1;
bool clip = true;
int i;
if (!PyArg_ParseTuple(
args, "OOOOO|i:intersect_ray_tri",
UNPACK3_EX(&, py_tri, ), &py_ray, &py_ray_off, &clip))
args, "OOOOO|O&:intersect_ray_tri",
UNPACK3_EX(&, py_tri, ),
&py_ray, &py_ray_off,
PyC_ParseBool, &clip))
{
return NULL;
}
@@ -477,12 +481,12 @@ static PyObject *M_Geometry_intersect_line_plane(PyObject *UNUSED(self), PyObjec
PyObject *py_line_a, *py_line_b, *py_plane_co, *py_plane_no;
float line_a[3], line_b[3], plane_co[3], plane_no[3];
float isect[3];
int no_flip = false;
bool no_flip = false;
if (!PyArg_ParseTuple(
args, "OOOO|i:intersect_line_plane",
args, "OOOO|O&:intersect_line_plane",
&py_line_a, &py_line_b, &py_plane_co, &py_plane_no,
&no_flip))
PyC_ParseBool, &no_flip))
{
return NULL;
}
@@ -589,14 +593,15 @@ static PyObject *M_Geometry_intersect_line_sphere(PyObject *UNUSED(self), PyObje
PyObject *py_line_a, *py_line_b, *py_sphere_co;
float line_a[3], line_b[3], sphere_co[3];
float sphere_radius;
int clip = true;
bool clip = true;
float isect_a[3];
float isect_b[3];
if (!PyArg_ParseTuple(
args, "OOOf|i:intersect_line_sphere",
&py_line_a, &py_line_b, &py_sphere_co, &sphere_radius, &clip))
args, "OOOf|O&:intersect_line_sphere",
&py_line_a, &py_line_b, &py_sphere_co, &sphere_radius,
PyC_ParseBool, &clip))
{
return NULL;
}
@@ -661,14 +666,15 @@ static PyObject *M_Geometry_intersect_line_sphere_2d(PyObject *UNUSED(self), PyO
PyObject *py_line_a, *py_line_b, *py_sphere_co;
float line_a[2], line_b[2], sphere_co[2];
float sphere_radius;
int clip = true;
bool clip = true;
float isect_a[2];
float isect_b[2];
if (!PyArg_ParseTuple(
args, "OOOf|i:intersect_line_sphere_2d",
&py_line_a, &py_line_b, &py_sphere_co, &sphere_radius, &clip))
args, "OOOf|O&:intersect_line_sphere_2d",
&py_line_a, &py_line_b, &py_sphere_co, &sphere_radius,
PyC_ParseBool, &clip))
{
return NULL;
}