From: Thomas Heller Date: Thu, 20 Feb 2003 20:32:11 +0000 (+0000) Subject: Strange control flow in PyInt_AsLong. When nb_int is called inside X-Git-Tag: v2.3c1~1746 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=850566b644142f8698d691782e7ef3fa8d7a6cf8;p=python Strange control flow in PyInt_AsLong. When nb_int is called inside the PyInt_AsLong function, and this returns a long, the value is first retrieved with PyLong_AsLong, but afterwards overwritten by a call to PyInt_AS_LONG. Fixes SF #690253. --- diff --git a/Objects/intobject.c b/Objects/intobject.c index fee7e4e38d..611aedf9f4 100644 --- a/Objects/intobject.c +++ b/Objects/intobject.c @@ -162,10 +162,10 @@ PyInt_AsLong(register PyObject *op) if (PyLong_Check(io)) { /* got a long? => retry int conversion */ val = PyLong_AsLong((PyObject *)io); - if (PyErr_Occurred()) { - Py_DECREF(io); + Py_DECREF(io); + if ((val == -1) && PyErr_Occurred()) return -1; - } + return val; } else {