diff options
Diffstat (limited to 'Python/marshal.c')
| -rw-r--r-- | Python/marshal.c | 20 | 
1 files changed, 9 insertions, 11 deletions
diff --git a/Python/marshal.c b/Python/marshal.c index ca2f9aa..865a0c8 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -698,10 +698,9 @@ r_object(RFILE *p)  				break;  			}  			buf[n] = '\0'; -			retval = NULL; -			PyFPE_START_PROTECT("atof", break) -			dx = PyOS_ascii_atof(buf); -			PyFPE_END_PROTECT(dx) +			dx = PyOS_string_to_double(buf, NULL, NULL); +			if (dx == -1.0 && PyErr_Occurred()) +				break;  			retval = PyFloat_FromDouble(dx);  			break;  		} @@ -738,10 +737,9 @@ r_object(RFILE *p)  				break;  			}  			buf[n] = '\0'; -			retval = NULL; -			PyFPE_START_PROTECT("atof", break;) -			c.real = PyOS_ascii_atof(buf); -			PyFPE_END_PROTECT(c) +			c.real = PyOS_string_to_double(buf, NULL, NULL); +			if (c.real == -1.0 && PyErr_Occurred()) +				break;  			n = r_byte(p);  			if (n == EOF || r_string(buf, (int)n, p) != n) {  				PyErr_SetString(PyExc_EOFError, @@ -750,9 +748,9 @@ r_object(RFILE *p)  				break;  			}  			buf[n] = '\0'; -			PyFPE_START_PROTECT("atof", break) -			c.imag = PyOS_ascii_atof(buf); -			PyFPE_END_PROTECT(c) +			c.imag = PyOS_string_to_double(buf, NULL, NULL); +			if (c.imag == -1.0 && PyErr_Occurred()) +				break;  			retval = PyComplex_FromCComplex(c);  			break;  		}  | 
