mirror of https://github.com/python/cpython
Issue #5829: complex('1e-500') shouldn't raise an exception.
Also fix some confusing indentation.
This commit is contained in:
parent
de0d5e3247
commit
22999a69e1
|
@ -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') {
|
||||
|
||||
|
|
Loading…
Reference in New Issue