mirror of
https://github.com/python/cpython.git
synced 2025-11-01 10:45:30 +00:00
Changes for Lee Busby's SIGFPE patch set.
New file pyfpe.c and exception FloatingPointError. Surround some f.p. operations with PyFPE macro brackets.
This commit is contained in:
parent
09e6ad0c1e
commit
0ae748d3c4
5 changed files with 38 additions and 4 deletions
|
|
@ -412,6 +412,7 @@ r_object(p)
|
|||
{
|
||||
extern double atof PROTO((const char *));
|
||||
char buf[256];
|
||||
double dx;
|
||||
n = r_byte(p);
|
||||
if (r_string(buf, (int)n, p) != n) {
|
||||
err_setstr(EOFError,
|
||||
|
|
@ -419,7 +420,10 @@ r_object(p)
|
|||
return NULL;
|
||||
}
|
||||
buf[n] = '\0';
|
||||
return newfloatobject(atof(buf));
|
||||
PyFPE_START_PROTECT("atof", return 0)
|
||||
dx = atof(buf);
|
||||
PyFPE_END_PROTECT
|
||||
return newfloatobject(dx);
|
||||
}
|
||||
|
||||
#ifndef WITHOUT_COMPLEX
|
||||
|
|
@ -435,7 +439,9 @@ r_object(p)
|
|||
return NULL;
|
||||
}
|
||||
buf[n] = '\0';
|
||||
PyFPE_START_PROTECT("atof", return 0)
|
||||
c.real = atof(buf);
|
||||
PyFPE_END_PROTECT
|
||||
n = r_byte(p);
|
||||
if (r_string(buf, (int)n, p) != n) {
|
||||
err_setstr(EOFError,
|
||||
|
|
@ -443,7 +449,9 @@ r_object(p)
|
|||
return NULL;
|
||||
}
|
||||
buf[n] = '\0';
|
||||
PyFPE_START_PROTECT("atof", return 0)
|
||||
c.imag = atof(buf);
|
||||
PyFPE_END_PROTECT
|
||||
return newcomplexobject(c);
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue