diff --git a/Lib/test/test_long.py b/Lib/test/test_long.py index 09adc749918..18bb7a45956 100644 --- a/Lib/test/test_long.py +++ b/Lib/test/test_long.py @@ -539,7 +539,7 @@ def test_format(self): 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) diff --git a/Misc/NEWS b/Misc/NEWS index 8a770609bac..c59efa1b435 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -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 dc7ce87afce..4b7eee059cd 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;