cpython: d984dfe8c34e (original) (raw)

Mercurial > cpython

changeset 92251:d984dfe8c34e

Issue #22042: signal.set_wakeup_fd(fd) now raises an exception if the file descriptor is in blocking mode. [#22042]

Victor Stinner victor.stinner@gmail.com
date Wed, 27 Aug 2014 12:59:44 +0200
parents 6d8e01f2169c
children f5f5553f219e
files Lib/test/test_signal.py Misc/NEWS Modules/signalmodule.c
diffstat 3 files changed, 47 insertions(+), 1 deletions(-)[+] [-] Lib/test/test_signal.py 25 Misc/NEWS 3 Modules/signalmodule.c 20

line wrap: on

line diff

--- a/Lib/test/test_signal.py +++ b/Lib/test/test_signal.py @@ -271,6 +271,9 @@ class WakeupFDTests(unittest.TestCase): self.addCleanup(os.close, r2) self.addCleanup(os.close, w2)

+ signal.set_wakeup_fd(w1) self.assertEqual(signal.set_wakeup_fd(w2), w1) self.assertEqual(signal.set_wakeup_fd(-1), w2) @@ -279,10 +282,12 @@ class WakeupFDTests(unittest.TestCase): def test_set_wakeup_fd_socket_result(self): sock1 = socket.socket() self.addCleanup(sock1.close)

sock2 = socket.socket() self.addCleanup(sock2.close)

signal.set_wakeup_fd(fd1) @@ -290,6 +295,26 @@ class WakeupFDTests(unittest.TestCase): self.assertEqual(signal.set_wakeup_fd(-1), fd2) self.assertEqual(signal.set_wakeup_fd(-1), -1)

+

+

+ @unittest.skipIf(sys.platform == "win32", "Not valid on Windows") class WakeupSignalTests(unittest.TestCase):

--- a/Misc/NEWS +++ b/Misc/NEWS @@ -124,6 +124,9 @@ Core and Builtins Library ------- +- Issue #22042: signal.set_wakeup_fd(fd) now raises an exception if the file

--- a/Modules/signalmodule.c +++ b/Modules/signalmodule.c @@ -561,9 +561,15 @@ signal_set_wakeup_fd(PyObject *self, PyO PyErr_SetFromErrno(PyExc_OSError); return NULL; } +

+

#else if (fd != -1) {

+ if (!_PyVerify_fd(fd)) { PyErr_SetString(PyExc_ValueError, "invalid fd"); return NULL; @@ -585,6 +593,16 @@ signal_set_wakeup_fd(PyObject *self, PyO PyErr_SetFromErrno(PyExc_OSError); return NULL; } +