From f5e4ddca5f96c25ab981fdce20178473cbcf621d Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Fri, 15 Nov 2019 18:26:57 +0000 Subject: [PATCH] rand.c: Cope with large `range' arguments. Python 3 will report large numbers as being `int' values, and `PyInt_AS_LONG' will return nonsense in this case. --- rand.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rand.c b/rand.c index 6c6abdb..22a0b3c 100644 --- a/rand.c +++ b/rand.c @@ -102,8 +102,9 @@ static PyObject *grmeth_range(PyObject *me, PyObject *arg) if (!PyArg_ParseTuple(arg, "O:range", &m)) return (0); if (grand_check(me)) return (0); if (PyInt_Check(m)) { - long mm = PyInt_AS_LONG(m); - if (mm <= 0) goto notpos; + long mm = PyInt_AsLong(m); + if (mm == -1 && PyErr_Occurred()) PyErr_Clear(); + else if (mm <= 0) goto notpos; else if (mm <= 0xffffffff) return (PyInt_FromLong(grand_range(GRAND_R(me), mm))); } -- 2.11.0