aboutsummaryrefslogtreecommitdiffstats
path: root/process.c
diff options
context:
space:
mode:
authornormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-05-02 21:04:17 +0000
committernormal <normal@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-05-02 21:04:17 +0000
commit87238d9b20804479fa3d1a716128f0b2a92804d9 (patch)
tree04eb3f31226a0677f4b8826ce1d0431f35e5b8ea /process.c
parentce64e3623563e1e6b1cdfdecd7c54869a6522248 (diff)
downloadruby-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
Diffstat (limited to 'process.c')
-rw-r--r--process.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/process.c b/process.c
index 660c2c7314..6f3fc235f2 100644
--- a/process.c
+++ b/process.c
@@ -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