add local _PyLong_AsInt() needed for python older then 3.3.2

This commit is contained in:
Campbell Barton 2013-10-17 09:58:36 +00:00
parent 992902cee0
commit 6d5024828b
2 changed files with 20 additions and 0 deletions

@ -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

@ -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__ */