Python 3 will report large numbers as being `int' values, and
`PyInt_AS_LONG' will return nonsense in this case.
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)));
}