From 6d5024828b064d07b1f85c8053ad26a593b36188 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 17 Oct 2013 09:58:36 +0000 Subject: [PATCH] add local _PyLong_AsInt() needed for python older then 3.3.2 --- source/blender/python/generic/py_capi_utils.c | 16 ++++++++++++++++ source/blender/python/generic/py_capi_utils.h | 4 ++++ 2 files changed, 20 insertions(+) diff --git a/source/blender/python/generic/py_capi_utils.c b/source/blender/python/generic/py_capi_utils.c index 63f66afd8a8..8e90d484a9d 100644 --- a/source/blender/python/generic/py_capi_utils.c +++ b/source/blender/python/generic/py_capi_utils.c @@ -887,3 +887,19 @@ PyObject *PyC_FlagSet_FromBitfield(PyC_FlagSet *items, int flag) return ret; } + +/* compat only */ +#if PY_VERSION_HEX < 0x03030200 +int +_PyLong_AsInt(PyObject *obj) +{ + int overflow; + long result = PyLong_AsLongAndOverflow(obj, &overflow); + if (overflow || result > INT_MAX || result < INT_MIN) { + PyErr_SetString(PyExc_OverflowError, + "Python int too large to convert to C int"); + return -1; + } + return (int)result; +} +#endif diff --git a/source/blender/python/generic/py_capi_utils.h b/source/blender/python/generic/py_capi_utils.h index 8928642bc3e..c6792ddfc79 100644 --- a/source/blender/python/generic/py_capi_utils.h +++ b/source/blender/python/generic/py_capi_utils.h @@ -72,4 +72,8 @@ int PyC_FlagSet_ValueFromID(PyC_FlagSet *item, const char *identifier, int int PyC_FlagSet_ToBitfield(PyC_FlagSet *items, PyObject *value, int *r_value, const char *error_prefix); PyObject *PyC_FlagSet_FromBitfield(PyC_FlagSet *items, int flag); +#if PY_VERSION_HEX < 0x03030200 +int _PyLong_AsInt(PyObject *obj); +#endif + #endif /* __PY_CAPI_UTILS_H__ */