Mercurial > cpython-lru_cache-weakref
diff Objects/floatobject.c @ 19674:715244108faa legacy-trunk
Raise OverflowError when appropriate on long->float conversion. Most of
the fiddling is simply due to that no caller of PyLong_AsDouble ever
checked for failure (so that's fixing old bugs). PyLong_AsDouble is much
faster for big inputs now too, but that's more of a happy consequence
than a design goal.
| author | Tim Peters <tim.peters@gmail.com> |
|---|---|
| date | Tue, 04 Sep 2001 05:14:19 +0000 |
| parents | b3271297b984 |
| children | cdfdd5359411 |
line wrap: on
line diff
--- a/Objects/floatobject.c Tue Sep 04 03:51:09 2001 +0000 +++ b/Objects/floatobject.c Tue Sep 04 05:14:19 2001 +0000 @@ -271,18 +271,19 @@ return obj; static int -convert_to_double(PyObject **v, - double *dbl) +convert_to_double(PyObject **v, double *dbl) { register PyObject *obj = *v; - + if (PyInt_Check(obj)) { *dbl = (double)PyInt_AS_LONG(obj); } else if (PyLong_Check(obj)) { - PyFPE_START_PROTECT("convert_to_double", {*v=NULL;return -1;}) *dbl = PyLong_AsDouble(obj); - PyFPE_END_PROTECT(*dbl) + if (*dbl == -1.0 && PyErr_Occurred()) { + *v = NULL; + return -1; + } } else { Py_INCREF(Py_NotImplemented);
