From: Alexey Izbyshev Date: Fri, 24 Aug 2018 04:39:45 +0000 (+0300) Subject: closes bpo-34468: Objects/rangeobject.c: Fix an always-false condition in range_repr... X-Git-Tag: v3.8.0a1~1171 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ecae3ca0bda3cacf3b0125bae0bc718a17cc071;p=thirdparty%2FPython%2Fcpython.git closes bpo-34468: Objects/rangeobject.c: Fix an always-false condition in range_repr() (GH-8880) Also, propagate the error from PyNumber_AsSsize_t() because we don't care only about OverflowError which is not reported if the second argument is NULL. Reported by Svace static analyzer. --- diff --git a/Objects/rangeobject.c b/Objects/rangeobject.c index 28a244e53710..2b00a17425a2 100644 --- a/Objects/rangeobject.c +++ b/Objects/rangeobject.c @@ -575,11 +575,11 @@ range_repr(rangeobject *r) Py_ssize_t istep; /* Check for special case values for printing. We don't always - need the step value. We don't care about errors - (it means overflow), so clear the errors. */ + need the step value. We don't care about overflow. */ istep = PyNumber_AsSsize_t(r->step, NULL); - if (istep != 1 || (istep == -1 && PyErr_Occurred())) { - PyErr_Clear(); + if (istep == -1 && PyErr_Occurred()) { + assert(!PyErr_ExceptionMatches(PyExc_OverflowError)); + return NULL; } if (istep == 1)