mirror of
https://github.com/python/cpython.git
synced 2025-10-08 08:01:55 +00:00
Issue #5914: Add new C-API function PyOS_string_to_double, to complement
PyOS_double_to_string, and deprecate PyOS_ascii_strtod and PyOS_ascii_atof.
This commit is contained in:
parent
75930f85df
commit
725bfd8489
10 changed files with 253 additions and 96 deletions
|
@ -799,25 +799,26 @@ complex_subtype_from_string(PyTypeObject *type, PyObject *v)
|
|||
*/
|
||||
|
||||
/* first look for forms starting with <float> */
|
||||
errno = 0;
|
||||
z = PyOS_ascii_strtod(s, &end);
|
||||
if (end == s && errno == ENOMEM)
|
||||
return PyErr_NoMemory();
|
||||
if (errno == ERANGE && fabs(z) >= 1.0)
|
||||
goto overflow;
|
||||
|
||||
z = PyOS_string_to_double(s, &end, PyExc_OverflowError);
|
||||
if (z == -1.0 && PyErr_Occurred()) {
|
||||
if (PyErr_ExceptionMatches(PyExc_ValueError))
|
||||
PyErr_Clear();
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
if (end != s) {
|
||||
/* all 4 forms starting with <float> land here */
|
||||
s = end;
|
||||
if (*s == '+' || *s == '-') {
|
||||
/* <float><signed-float>j | <float><sign>j */
|
||||
x = z;
|
||||
errno = 0;
|
||||
y = PyOS_ascii_strtod(s, &end);
|
||||
if (end == s && errno == ENOMEM)
|
||||
return PyErr_NoMemory();
|
||||
if (errno == ERANGE && fabs(y) >= 1.0)
|
||||
goto overflow;
|
||||
y = PyOS_string_to_double(s, &end, PyExc_OverflowError);
|
||||
if (y == -1.0 && PyErr_Occurred()) {
|
||||
if (PyErr_ExceptionMatches(PyExc_ValueError))
|
||||
PyErr_Clear();
|
||||
else
|
||||
return NULL;
|
||||
}
|
||||
if (end != s)
|
||||
/* <float><signed-float>j */
|
||||
s = end;
|
||||
|
@ -877,11 +878,6 @@ complex_subtype_from_string(PyTypeObject *type, PyObject *v)
|
|||
PyErr_SetString(PyExc_ValueError,
|
||||
"complex() arg is a malformed string");
|
||||
return NULL;
|
||||
|
||||
overflow:
|
||||
PyErr_SetString(PyExc_OverflowError,
|
||||
"complex() arg overflow");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue