summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/test/test_long.py2
-rw-r--r--Misc/NEWS3
-rw-r--r--Objects/longobject.c4
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)
diff --git a/Misc/NEWS b/Misc/NEWS
index 8a77060..c59efa1 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 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;