Issue #22018: signal.set_wakeup_fd() now raises an OSError instead of a

ValueError on fstat() failure.
This commit is contained in:
Victor Stinner 2014-07-21 16:28:54 +02:00
parent 38d773bd10
commit 0bffc94d57
3 changed files with 17 additions and 6 deletions

View file

@ -437,12 +437,20 @@ signal_set_wakeup_fd(PyObject *self, PyObject *args)
return NULL;
}
#endif
if (fd != -1 && (!_PyVerify_fd(fd) || fstat(fd, &buf) != 0)) {
PyErr_SetString(PyExc_ValueError, "invalid fd");
return NULL;
if (fd != -1) {
if (!_PyVerify_fd(fd)) {
PyErr_SetString(PyExc_ValueError, "invalid fd");
return NULL;
}
if (fstat(fd, &buf) != 0)
return PyErr_SetFromErrno(PyExc_OSError);
}
old_fd = wakeup_fd;
wakeup_fd = fd;
return PyLong_FromLong(old_fd);
}