X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb-python/blobdiff_plain/2135a6d38fafd669e214e93b99bc1e4c0867cca0..27dc0847b3fcbbd13ced4ace2d31a0ed080d3ef1:/rand.c diff --git a/rand.c b/rand.c index 675bf70..22a0b3c 100644 --- a/rand.c +++ b/rand.c @@ -102,16 +102,14 @@ 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; - if (mm <= 0xffffffff) + 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))); } - if ((x = getmp(m)) == 0) - goto end; - if (!MP_POSP(x)) - goto notpos; + if ((x = getmp(m)) == 0) goto end; + if (!MP_POSP(x)) goto notpos; y = mprand_range(MP_NEW, x, GRAND_R(me), 0); MP_DROP(x); return (mp_pywrap(y));