_csv: use _PyLong_AsInt()

This commit is contained in:
Victor Stinner 2016-10-19 16:00:37 +02:00
parent af48a91715
commit 7a6dbb71b2
1 changed files with 4 additions and 10 deletions

View File

@ -209,23 +209,17 @@ _set_int(const char *name, int *target, PyObject *src, int dflt)
if (src == NULL) if (src == NULL)
*target = dflt; *target = dflt;
else { else {
long value; int value;
if (!PyLong_CheckExact(src)) { if (!PyLong_CheckExact(src)) {
PyErr_Format(PyExc_TypeError, PyErr_Format(PyExc_TypeError,
"\"%s\" must be an integer", name); "\"%s\" must be an integer", name);
return -1; return -1;
} }
value = PyLong_AsLong(src); value = _PyLong_AsInt(src);
if (value == -1 && PyErr_Occurred()) if (value == -1 && PyErr_Occurred()) {
return -1;
#if SIZEOF_LONG > SIZEOF_INT
if (value > INT_MAX || value < INT_MIN) {
PyErr_Format(PyExc_ValueError,
"integer out of range for \"%s\"", name);
return -1; return -1;
} }
#endif *target = value;
*target = (int)value;
} }
return 0; return 0;
} }