summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2002-03-09 04:58:24 (GMT)
committerTim Peters <tim.peters@gmail.com>2002-03-09 04:58:24 (GMT)
commitdc5a508761d7260bc863a2f3068723c298336382 (patch)
tree7a59e85272d1bebdce6c05c0da21d5b5d7f926f4 /Modules
parentd50e544b9f67738f122d9931eab8b8d71633527a (diff)
downloadcpython-dc5a508761d7260bc863a2f3068723c298336382.zip
cpython-dc5a508761d7260bc863a2f3068723c298336382.tar.gz
cpython-dc5a508761d7260bc863a2f3068723c298336382.tar.bz2
SF bug 525705: [2.2] underflow raise OverflowException.
Another year in the quest to out-guess random C behavior. Added macros Py_ADJUST_ERANGE1(X) and Py_ADJUST_ERANGE2(X, Y). The latter is useful for functions with complex results. Two corrections to errno- after-libm-call are attempted: 1. If the platform set errno to ERANGE due to underflow, clear errno. Some unknown subset of libm versions and link options do this. It's allowed by C89, but I never figured anyone would do it. 2. If the platform did not set errno but overflow occurred, force errno to ERANGE. C89 required setting errno to ERANGE, but C99 doesn't. Some unknown subset of libm versions and link options do it the C99 way now. Bugfix candidate, but hold off until some Linux people actually try it, with and without -lieee. I'll send a help plea to Python-Dev.
Diffstat (limited to 'Modules')
-rw-r--r--Modules/cmathmodule.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/Modules/cmathmodule.c b/Modules/cmathmodule.c
index adf76b8..6e79680 100644
--- a/Modules/cmathmodule.c
+++ b/Modules/cmathmodule.c
@@ -337,8 +337,7 @@ math_1(PyObject *args, Py_complex (*func)(Py_complex))
PyFPE_START_PROTECT("complex function", return 0)
x = (*func)(x);
PyFPE_END_PROTECT(x)
- Py_SET_ERANGE_IF_OVERFLOW(x.real);
- Py_SET_ERANGE_IF_OVERFLOW(x.imag);
+ Py_ADJUST_ERANGE2(x.real, x.imag);
if (errno != 0)
return math_error();
else