From: Christian Heimes Date: Fri, 4 Jan 2008 00:37:34 +0000 (+0000) Subject: Bug #1481296: Fixed long(float('nan'))!=0L. X-Git-Tag: v2.6a1~770 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8267d1dfe5f73007812dcb35f865fd4763e94471;p=python Bug #1481296: Fixed long(float('nan'))!=0L. --- diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index 29515c7bb7..d74535040a 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -498,6 +498,10 @@ class LongTest(unittest.TestCase): eq(x > y, Rcmp > 0, Frm("%r > %r %d", x, y, Rcmp)) eq(x >= y, Rcmp >= 0, Frm("%r >= %r %d", x, y, Rcmp)) + def test_nan_inf(self): + self.assertRaises(OverflowError, long, float('inf')) + self.assertEqual(long(float('nan')), 0L) + def test_main(): test_support.run_unittest(LongTest) diff --git a/Misc/NEWS b/Misc/NEWS index 87de1235be..bd98e38fb2 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,8 @@ What's New in Python 2.6 alpha 1? Core and builtins ----------------- +- Bug #1481296: Fixed long(float('nan'))!=0L. + - Issue #1640: Added math.isinf(x), math.isnan(x) and math.copysign(x, y) functions. diff --git a/Objects/longobject.c b/Objects/longobject.c index 262b40ade1..e2ffb35a97 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -170,6 +170,9 @@ PyLong_FromDouble(double dval) "cannot convert float infinity to long"); return NULL; } + if (Py_IS_NAN(dval)) { + return PyLong_FromLong(0L); + } if (dval < 0.0) { neg = 1; dval = -dval;