diff options
author | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-02 21:04:17 +0000 |
---|---|---|
committer | normal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-02 21:04:17 +0000 |
commit | 87238d9b20804479fa3d1a716128f0b2a92804d9 (patch) | |
tree | 04eb3f31226a0677f4b8826ce1d0431f35e5b8ea | |
parent | ce64e3623563e1e6b1cdfdecd7c54869a6522248 (diff) | |
download | ruby-87238d9b20804479fa3d1a716128f0b2a92804d9.tar.gz |
process.c (disable_child_handler_fork_child): initialize handler for SIGPIPE
This only happens on the !POSIX_SIGNAL case; but one may
test with the following:
--- a/process.c
+++ b/process.c
@@ -3479,6 +3479,7 @@ disable_child_handler_fork_parent(struct child_handler_disabler_state *old)
#endif
}
+#undef POSIX_SIGNAL
/* This function should be async-signal-safe. Actually it is. */
static int
disable_child_handler_fork_child(struct child_handler_disabler_state *old, char *errmsg, size_t errmsg_buflen)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54890 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | process.c | 6 |
2 files changed, 10 insertions, 1 deletions
@@ -1,3 +1,8 @@ +Tue May 3 05:35:54 2016 Eric Wong <e@80x24.org> + + * process.c (disable_child_handler_fork_child): + initialize handler for SIGPIPE for !POSIX_SIGNAL + Mon May 2 23:03:42 2016 NAKAMURA Usaku <usa@ruby-lang.org> * win32/win32.c, include/ruby/win32.h (rb_w32_utruncate): implements new @@ -3502,8 +3502,12 @@ disable_child_handler_fork_child(struct child_handler_disabler_state *old, char for (sig = 1; sig < NSIG; sig++) { int reset = 0; #ifdef SIGPIPE - if (sig == SIGPIPE) + if (sig == SIGPIPE) { reset = 1; +#ifndef POSIX_SIGNAL + handler = SIG_DFL; +#endif + } #endif if (!reset) { #ifdef POSIX_SIGNAL |