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:
Guido van Rossum 1997-02-14 22:58:07 +00:00
parent 09e6ad0c1e
commit 0ae748d3c4
5 changed files with 38 additions and 4 deletions

View file

@ -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