bpo-38835: Don't use PyFPE_START_PROTECT and PyFPE_END_PROTECT (GH-17231)
The PyFPE_START_PROTECT() and PyFPE_END_PROTECT() macros are empty:
they have been doing nothing for the last year (since commit
735ae8d139a673b30b321dc10acfd3d14f0d633b), so stop using them.
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 40d2ed7..4f7d1b7 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -2166,11 +2166,9 @@
CHECK_STRING_LENGTH(s);
CHECK_TCL_APPARTMENT;
- PyFPE_START_PROTECT("Tkapp_ExprDouble", return 0)
ENTER_TCL
retval = Tcl_ExprDouble(Tkapp_Interp(self), s, &v);
ENTER_OVERLAP
- PyFPE_END_PROTECT(retval)
if (retval == TCL_ERROR)
res = Tkinter_Error(self);
else
diff --git a/Modules/clinic/cmathmodule.c.h b/Modules/clinic/cmathmodule.c.h
index 81a8437..4b6653a 100644
--- a/Modules/clinic/cmathmodule.c.h
+++ b/Modules/clinic/cmathmodule.c.h
@@ -26,9 +26,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_acos_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -69,9 +68,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_acosh_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -112,9 +110,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_asin_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -155,9 +152,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_asinh_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -198,9 +194,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_atan_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -241,9 +236,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_atanh_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -284,9 +278,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_cos_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -327,9 +320,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_cosh_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -370,9 +362,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_exp_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -413,9 +404,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_log10_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -456,9 +446,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_sin_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -499,9 +488,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_sinh_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -542,9 +530,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_sqrt_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -585,9 +572,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_tan_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -628,9 +614,8 @@
goto exit;
}
/* modifications for z */
- errno = 0; PyFPE_START_PROTECT("complex function", goto exit);
+ errno = 0;
_return_value = cmath_tanh_impl(module, z);
- PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -968,4 +953,4 @@
exit:
return return_value;
}
-/*[clinic end generated code: output=3edc4484b10ae752 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=353347db2e808e0d input=a9049054013a1b77]*/
diff --git a/Modules/cmathmodule.c b/Modules/cmathmodule.c
index 02c09bb..8b21dec 100644
--- a/Modules/cmathmodule.c
+++ b/Modules/cmathmodule.c
@@ -17,7 +17,7 @@
/*[python input]
class Py_complex_protected_converter(Py_complex_converter):
def modify(self):
- return 'errno = 0; PyFPE_START_PROTECT("complex function", goto exit);'
+ return 'errno = 0;'
class Py_complex_protected_return_converter(CReturnConverter):
@@ -26,7 +26,6 @@
def render(self, function, data):
self.declare(data)
data.return_conversion.append("""
-PyFPE_END_PROTECT(_return_value);
if (errno == EDOM) {
PyErr_SetString(PyExc_ValueError, "math domain error");
goto exit;
@@ -40,7 +39,7 @@
}
""".strip())
[python start generated code]*/
-/*[python end generated code: output=da39a3ee5e6b4b0d input=345daa075b1028e7]*/
+/*[python end generated code: output=da39a3ee5e6b4b0d input=8b27adb674c08321]*/
#if (FLT_RADIX != 2 && FLT_RADIX != 16)
#error "Modules/cmathmodule.c expects FLT_RADIX to be 2 or 16"
@@ -960,7 +959,6 @@
Py_complex y;
errno = 0;
- PyFPE_START_PROTECT("complex function", return 0)
x = c_log(x);
if (y_obj != NULL) {
y = PyComplex_AsCComplex(y_obj);
@@ -970,7 +968,6 @@
y = c_log(y);
x = _Py_c_quot(x, y);
}
- PyFPE_END_PROTECT(x)
if (errno != 0)
return math_error();
return PyComplex_FromCComplex(x);
@@ -1008,9 +1005,7 @@
double phi;
errno = 0;
- PyFPE_START_PROTECT("arg function", return 0)
phi = c_atan2(z);
- PyFPE_END_PROTECT(phi)
if (errno != 0)
return math_error();
else
@@ -1035,10 +1030,8 @@
double r, phi;
errno = 0;
- PyFPE_START_PROTECT("polar function", return 0)
phi = c_atan2(z); /* should not cause any exception */
r = _Py_c_abs(z); /* sets errno to ERANGE on overflow */
- PyFPE_END_PROTECT(r)
if (errno != 0)
return math_error();
else
@@ -1074,7 +1067,6 @@
{
Py_complex z;
errno = 0;
- PyFPE_START_PROTECT("rect function", return 0)
/* deal with special values */
if (!Py_IS_FINITE(r) || !Py_IS_FINITE(phi)) {
@@ -1116,7 +1108,6 @@
errno = 0;
}
- PyFPE_END_PROTECT(z)
if (errno != 0)
return math_error();
else
diff --git a/Modules/mathmodule.c b/Modules/mathmodule.c
index eaaeedb..e60e19b 100644
--- a/Modules/mathmodule.c
+++ b/Modules/mathmodule.c
@@ -936,9 +936,7 @@
if (x == -1.0 && PyErr_Occurred())
return NULL;
errno = 0;
- PyFPE_START_PROTECT("in math_1", return 0);
r = (*func)(x);
- PyFPE_END_PROTECT(r);
if (Py_IS_NAN(r) && !Py_IS_NAN(x)) {
PyErr_SetString(PyExc_ValueError,
"math domain error"); /* invalid arg */
@@ -972,9 +970,7 @@
if (x == -1.0 && PyErr_Occurred())
return NULL;
errno = 0;
- PyFPE_START_PROTECT("in math_1a", return 0);
r = (*func)(x);
- PyFPE_END_PROTECT(r);
if (errno && is_error(r))
return NULL;
return PyFloat_FromDouble(r);
@@ -1025,9 +1021,7 @@
if ((x == -1.0 || y == -1.0) && PyErr_Occurred())
return NULL;
errno = 0;
- PyFPE_START_PROTECT("in math_2", return 0);
r = (*func)(x, y);
- PyFPE_END_PROTECT(r);
if (Py_IS_NAN(r)) {
if (!Py_IS_NAN(x) && !Py_IS_NAN(y))
errno = EDOM;
@@ -1340,8 +1334,6 @@
if (iter == NULL)
return NULL;
- PyFPE_START_PROTECT("fsum", Py_DECREF(iter); return NULL)
-
for(;;) { /* for x in iterable */
assert(0 <= n && n <= m);
assert((m == NUM_PARTIALS && p == ps) ||
@@ -1436,7 +1428,6 @@
sum = PyFloat_FromDouble(hi);
_fsum_error:
- PyFPE_END_PROTECT(hi)
Py_DECREF(iter);
if (p != ps)
PyMem_Free(p);
@@ -2111,9 +2102,7 @@
i = 0;
}
else {
- PyFPE_START_PROTECT("in math_frexp", return 0);
x = frexp(x, &i);
- PyFPE_END_PROTECT(x);
}
return Py_BuildValue("(di)", x, i);
}
@@ -2168,9 +2157,7 @@
errno = 0;
} else {
errno = 0;
- PyFPE_START_PROTECT("in math_ldexp", return 0);
r = ldexp(x, (int)exp);
- PyFPE_END_PROTECT(r);
if (Py_IS_INFINITY(r))
errno = ERANGE;
}
@@ -2207,9 +2194,7 @@
}
errno = 0;
- PyFPE_START_PROTECT("in math_modf", return 0);
x = modf(x, &y);
- PyFPE_END_PROTECT(x);
return Py_BuildValue("(dd)", x, y);
}
@@ -2356,9 +2341,7 @@
if (Py_IS_INFINITY(y) && Py_IS_FINITE(x))
return PyFloat_FromDouble(x);
errno = 0;
- PyFPE_START_PROTECT("in math_fmod", return 0);
r = fmod(x, y);
- PyFPE_END_PROTECT(r);
if (Py_IS_NAN(r)) {
if (!Py_IS_NAN(x) && !Py_IS_NAN(y))
errno = EDOM;
@@ -2646,9 +2629,7 @@
else {
/* let libm handle finite**finite */
errno = 0;
- PyFPE_START_PROTECT("in math_pow", return 0);
r = pow(x, y);
- PyFPE_END_PROTECT(r);
/* a NaN result should arise only from (-ve)**(finite
non-integer); in this case we want to raise ValueError. */
if (!Py_IS_FINITE(r)) {