From c9e928ae0fbb56aed59d370c558697d996b670bf Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Fri, 1 Feb 2008 22:15:52 +0000 Subject: [PATCH] Integer ratio should return ints instead of longs whereever possible. --- Objects/floatobject.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Objects/floatobject.c b/Objects/floatobject.c index a3733fcd9c..ce6926bf6d 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -1201,8 +1201,8 @@ float_as_integer_ratio(PyObject *v, PyObject *unused) if (numerator == NULL) goto error; /* now self = numerator * 2**exponent exactly; fold in 2**exponent */ - denominator = PyInt_FromLong(1); - py_exponent = PyInt_FromLong(labs(exponent)); + denominator = PyLong_FromLong(1); + py_exponent = PyLong_FromLong(labs(exponent)); if (py_exponent == NULL) goto error; INPLACE_UPDATE(py_exponent, long_methods->nb_lshift(denominator, py_exponent)); @@ -1219,6 +1219,12 @@ float_as_integer_ratio(PyObject *v, PyObject *unused) py_exponent = NULL; } + /* Returns ints instead of longs where possible */ + INPLACE_UPDATE(numerator, PyNumber_Int(numerator)); + if (numerator == NULL) goto error; + INPLACE_UPDATE(denominator, PyNumber_Int(denominator)); + if (denominator == NULL) goto error; + result_pair = PyTuple_Pack(2, numerator, denominator); #undef INPLACE_UPDATE -- 2.40.0