From: Victor Stinner Date: Tue, 10 May 2011 15:13:00 +0000 (+0200) Subject: Issue #12011: signal.signal() and signal.siginterrupt() raise an OSError, X-Git-Tag: v3.3.0a1~2321 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=388196ed72fbac61eea511eefb36f8f94634a8b4;p=thirdparty%2FPython%2Fcpython.git Issue #12011: signal.signal() and signal.siginterrupt() raise an OSError, instead of a RuntimeError: OSError has an errno attribute. --- diff --git a/Doc/whatsnew/3.3.rst b/Doc/whatsnew/3.3.rst index e657af247202..d4426655d14e 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 5953d30a0798..2b0529e78976 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 e5046691a6e1..feeae5e212e4 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; }