From 388196ed72fbac61eea511eefb36f8f94634a8b4 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Tue, 10 May 2011 17:13:00 +0200 Subject: [PATCH] Issue #12011: signal.signal() and signal.siginterrupt() raise an OSError, instead of a RuntimeError: OSError has an errno attribute. --- Doc/whatsnew/3.3.rst | 3 +++ Misc/NEWS | 3 +++ Modules/signalmodule.c | 4 ++-- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/Doc/whatsnew/3.3.rst b/Doc/whatsnew/3.3.rst index e657af24720..d4426655d14 100644 --- a/Doc/whatsnew/3.3.rst +++ b/Doc/whatsnew/3.3.rst @@ -148,6 +148,9 @@ signal a nul byte into the wakeup file descriptor. So it is possible to wait more than one signal and know which signals were raised. +* :func:`signal.signal` and :func:`signal.siginterrupt` raise an OSError, + instead of a RuntimeError: OSError has an errno attribute. + Optimizations ============= diff --git a/Misc/NEWS b/Misc/NEWS index 5953d30a079..2b0529e7897 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -143,6 +143,9 @@ Core and Builtins Library ------- +- Issue #12011: signal.signal() and signal.siginterrupt() raise an OSError, + instead of a RuntimeError: OSError has an errno attribute. + - Issue #3709: a flush_headers method to BaseHTTPRequestHandler which manages the sending of headers to output stream and flushing the internal headers buffer. Patch contribution by Andrew Schaaf diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c index e5046691a6e..feeae5e212e 100644 --- a/Modules/signalmodule.c +++ b/Modules/signalmodule.c @@ -324,7 +324,7 @@ signal_signal(PyObject *self, PyObject *args) else func = signal_handler; if (PyOS_setsig(sig_num, func) == SIG_ERR) { - PyErr_SetFromErrno(PyExc_RuntimeError); + PyErr_SetFromErrno(PyExc_OSError); return NULL; } old_handler = Handlers[sig_num].func; @@ -393,7 +393,7 @@ signal_siginterrupt(PyObject *self, PyObject *args) return NULL; } if (siginterrupt(sig_num, flag)<0) { - PyErr_SetFromErrno(PyExc_RuntimeError); + PyErr_SetFromErrno(PyExc_OSError); return NULL; }