summaryrefslogtreecommitdiffstats
path: root/Objects/floatobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'Objects/floatobject.c')
-rw-r--r--Objects/floatobject.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/Objects/floatobject.c b/Objects/floatobject.c
index 924b312..129f5bd 100644
--- a/Objects/floatobject.c
+++ b/Objects/floatobject.c
@@ -642,6 +642,13 @@ float_coerce(PyObject **pv, PyObject **pw)
}
static PyObject *
+float_long(PyObject *v)
+{
+ double x = PyFloat_AsDouble(v);
+ return PyLong_FromDouble(x);
+}
+
+static PyObject *
float_int(PyObject *v)
{
double x = PyFloat_AsDouble(v);
@@ -652,8 +659,7 @@ float_int(PyObject *v)
#ifdef RISCOS
/* conversion from floating to integral type would raise exception */
if (wholepart>LONG_MAX || wholepart<LONG_MIN) {
- PyErr_SetString(PyExc_OverflowError, "float too large to convert");
- return NULL;
+ return float_long(v);
}
#endif
/* doubles may have more bits than longs, or vice versa; and casting
@@ -663,15 +669,7 @@ float_int(PyObject *v)
aslong = (long)wholepart;
if ((double)aslong == wholepart)
return PyInt_FromLong(aslong);
- PyErr_SetString(PyExc_OverflowError, "float too large to convert");
- return NULL;
-}
-
-static PyObject *
-float_long(PyObject *v)
-{
- double x = PyFloat_AsDouble(v);
- return PyLong_FromDouble(x);
+ return float_long(v);
}
static PyObject *