From 8267d1dfe5f73007812dcb35f865fd4763e94471 Mon Sep 17 00:00:00 2001 From: Christian Heimes Date: Fri, 4 Jan 2008 00:37:34 +0000 Subject: [PATCH] Bug #1481296: Fixed long(float('nan'))!=0L. --- Lib/test/test_long.py | 4 ++++ Misc/NEWS | 2 ++ Objects/longobject.c | 3 +++ 3 files changed, 9 insertions(+) diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index 29515c7bb70..d74535040a4 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 87de1235bee..bd98e38fb2c 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 262b40ade12..e2ffb35a974 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;