diff options
-rw-r--r-- | Lib/test/test_long.py | 2 | ||||
-rw-r--r-- | Misc/NEWS | 3 | ||||
-rw-r--r-- | Objects/longobject.c | 4 |
3 files changed, 7 insertions, 2 deletions
diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index 09adc74..18bb7a4 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -539,7 +539,7 @@ class LongTest(unittest.TestCase): def test_nan_inf(self): self.assertRaises(OverflowError, int, float('inf')) - self.assertEqual(int(float('nan')), 0) + self.assertRaises(OverflowError, int, float('nan')) def test_main(): test_support.run_unittest(LongTest) @@ -12,6 +12,9 @@ What's New in Python 3.0a3? Core and Builtins ----------------- +- Object/longobject.c: long(float('nan')) raises an OverflowError instead + of returning 0. + - Issue #1762972: __file__ points to the source file instead of the pyc/pyo file if the py file exists. diff --git a/Objects/longobject.c b/Objects/longobject.c index dc7ce87..4b7eee0 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -255,7 +255,9 @@ PyLong_FromDouble(double dval) return NULL; } if (Py_IS_NAN(dval)) { - return PyLong_FromLong(0L); + PyErr_SetString(PyExc_OverflowError, + "cannot convert float NaN to int"); + return NULL; } if (dval < 0.0) { neg = 1; |