Issue #24489: ensure a previously set C errno doesn't disturb cmath.polar().

This commit is contained in:
Antoine Pitrou 2015-06-23 14:31:11 +02:00
parent 03863d2b29
commit 6bc217dd3d
4 changed files with 58 additions and 11 deletions

View file

@ -941,9 +941,10 @@ cmath_polar(PyObject *self, PyObject *args)
double r, phi;
if (!PyArg_ParseTuple(args, "D:polar", &z))
return NULL;
errno = 0;
PyFPE_START_PROTECT("polar function", return 0)
phi = c_atan2(z); /* should not cause any exception */
r = c_abs(z); /* sets errno to ERANGE on overflow; otherwise 0 */
r = c_abs(z); /* sets errno to ERANGE on overflow */
PyFPE_END_PROTECT(r)
if (errno != 0)
return math_error();