Commit 22999a69 authored by Mark Dickinson's avatar Mark Dickinson

Issue #5829: complex('1e-500') shouldn't raise an exception.

Also fix some confusing indentation.
parent de0d5e32
......@@ -220,6 +220,9 @@ class ComplexTest(unittest.TestCase):
self.assertAlmostEqual(complex("+1"), +1)
self.assertAlmostEqual(complex("(1+2j)"), 1+2j)
self.assertAlmostEqual(complex("(1.3+2.2j)"), 1.3+2.2j)
self.assertAlmostEqual(complex("1E-500"), 1e-500+0j)
self.assertAlmostEqual(complex("1e-500J"), 1e-500j)
self.assertAlmostEqual(complex("+1e-315-1e-400j"), 1e-315-1e-400j)
class complex2(complex): pass
self.assertAlmostEqual(complex(complex2(1+1j)), 1+1j)
......
......@@ -12,6 +12,8 @@ What's New in Python 2.6.3
Core and Builtins
-----------------
- Issue #5829: complex('1e-500') no longer raises an exception
- Issue #5787: object.__getattribute__(some_type, "__bases__") segfaulted on
some builtin types.
......
......@@ -995,16 +995,16 @@ complex_subtype_from_string(PyTypeObject *type, PyObject *v)
}
errno = 0;
PyFPE_START_PROTECT("strtod", return 0)
z = PyOS_ascii_strtod(s, &end) ;
z = PyOS_ascii_strtod(s, &end) ;
PyFPE_END_PROTECT(z)
if (errno != 0) {
PyOS_snprintf(buffer, sizeof(buffer),
"float() out of range: %.150s", s);
PyErr_SetString(
PyExc_ValueError,
buffer);
return NULL;
}
if (errno == ERANGE && fabs(z) >= 1.0) {
PyOS_snprintf(buffer, sizeof(buffer),
"float() out of range: %.150s", s);
PyErr_SetString(
PyExc_ValueError,
buffer);
return NULL;
}
s=end;
if (*s=='J' || *s=='j') {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment