From: Victor Stinner Date: Mon, 1 Jul 2013 22:14:56 +0000 (+0200) Subject: Issue #18343: faulthandler.register() now keeps the previous signal handler X-Git-Tag: v3.4.0a1~343^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8d3795474eb70d246ccd9dae23a784436238ed79;p=thirdparty%2FPython%2Fcpython.git Issue #18343: faulthandler.register() now keeps the previous signal handler when the function is called twice, so faulthandler.unregister() restores correctly the original signal handler. --- diff --git a/Misc/NEWS b/Misc/NEWS index dd6d8d13c716..c887f358420d 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -41,6 +41,10 @@ Core and Builtins Library ------- +- Issue #18343: faulthandler.register() now keeps the previous signal handler + when the function is called twice, so faulthandler.unregister() restores + correctly the original signal handler. + - Issue #17097: Make multiprocessing ignore EINTR. - Issue #18339: Negative ints keys in unpickler.memo dict no longer cause a diff --git a/Modules/faulthandler.c b/Modules/faulthandler.c index 7e363f03c94e..c86a27f26e89 100644 --- a/Modules/faulthandler.c +++ b/Modules/faulthandler.c @@ -742,6 +742,8 @@ faulthandler_register_py(PyObject *self, PyErr_SetFromErrno(PyExc_OSError); return NULL; } + + user->previous = previous; } Py_XDECREF(user->file); @@ -750,7 +752,6 @@ faulthandler_register_py(PyObject *self, user->fd = fd; user->all_threads = all_threads; user->chain = chain; - user->previous = previous; user->interp = tstate->interp; user->enabled = 1;