diff options
Diffstat (limited to 'Modules/zlibmodule.c')
-rw-r--r-- | Modules/zlibmodule.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c index bf8c8e4d12..28ed3cdca4 100644 --- a/Modules/zlibmodule.c +++ b/Modules/zlibmodule.c @@ -329,11 +329,6 @@ uint_converter(PyObject *obj, void *ptr) uval = PyLong_AsUnsignedLong(obj); if (uval == (unsigned long)-1 && PyErr_Occurred()) return 0; - if (uval > UINT_MAX) { - PyErr_SetString(PyExc_OverflowError, - "Python int too large for C unsigned int"); - return 0; - } } else { if (val < 0) { @@ -344,6 +339,12 @@ uint_converter(PyObject *obj, void *ptr) uval = (unsigned long)val; } + if (uval > UINT_MAX) { + PyErr_SetString(PyExc_OverflowError, + "Python int too large for C unsigned int"); + return 0; + } + *(unsigned int *)ptr = Py_SAFE_DOWNCAST(uval, unsigned long, unsigned int); return 1; } |