streamline __Pyx_PyInt_AsSize_t() a bit
authorStefan Behnel <stefan_ml@behnel.de>
Sat, 9 Mar 2013 13:18:55 +0000 (14:18 +0100)
committerStefan Behnel <stefan_ml@behnel.de>
Sat, 9 Mar 2013 13:18:55 +0000 (14:18 +0100)
Cython/Utility/TypeConversion.c

index 81fe6fa..92b55ef 100644 (file)
@@ -280,11 +280,10 @@ static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
 
 static CYTHON_INLINE size_t __Pyx_PyInt_AsSize_t(PyObject* x) {
    unsigned PY_LONG_LONG val = __Pyx_PyInt_AsUnsignedLongLong(x);
-   if (unlikely(val == (unsigned PY_LONG_LONG)-1 && PyErr_Occurred())) {
-       return (size_t)-1;
-   } else if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
-       PyErr_SetString(PyExc_OverflowError,
-                       "value too large to convert to size_t");
+   if (unlikely(val != (unsigned PY_LONG_LONG)(size_t)val)) {
+       if ((val != (unsigned PY_LONG_LONG)-1) || !PyErr_Occurred())
+           PyErr_SetString(PyExc_OverflowError,
+                           "value too large to convert to size_t");
        return (size_t)-1;
    }
    return (size_t)val;