* io.c (popen_exec): don't call rb_thread_atfork_before_exec. use
rb_exec_async_signal_safe instead of rb_exec_err. (pipe_open): use rb_fork_async_signal_safe instead of rb_fork_err. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36008 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
258716bd9d
commit
c27edd4a6e
@ -1,3 +1,9 @@
|
|||||||
|
Sun Jun 10 12:15:18 2012 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
|
* io.c (popen_exec): don't call rb_thread_atfork_before_exec. use
|
||||||
|
rb_exec_async_signal_safe instead of rb_exec_err.
|
||||||
|
(pipe_open): use rb_fork_async_signal_safe instead of rb_fork_err.
|
||||||
|
|
||||||
Sun Jun 10 11:44:57 2012 Tanaka Akira <akr@fsij.org>
|
Sun Jun 10 11:44:57 2012 Tanaka Akira <akr@fsij.org>
|
||||||
|
|
||||||
* process.c (rb_fork_internal): call after_fork only unless
|
* process.c (rb_fork_internal): call after_fork only unless
|
||||||
|
5
io.c
5
io.c
@ -5461,8 +5461,7 @@ popen_exec(void *pp, char *errmsg, size_t errmsg_len)
|
|||||||
{
|
{
|
||||||
struct popen_arg *p = (struct popen_arg*)pp;
|
struct popen_arg *p = (struct popen_arg*)pp;
|
||||||
|
|
||||||
rb_thread_atfork_before_exec();
|
return rb_exec_async_signal_safe(p->execp, errmsg, errmsg_len);
|
||||||
return rb_exec_err(p->execp, errmsg, errmsg_len);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -5539,7 +5538,7 @@ pipe_open(struct rb_exec_arg *eargp, const char *modestr, int fmode, convconfig_
|
|||||||
}
|
}
|
||||||
if (eargp) {
|
if (eargp) {
|
||||||
rb_exec_arg_fixup(arg.execp);
|
rb_exec_arg_fixup(arg.execp);
|
||||||
pid = rb_fork_err(&status, popen_exec, &arg, arg.execp->redirect_fds, errmsg, sizeof(errmsg));
|
pid = rb_fork_async_signal_safe(&status, popen_exec, &arg, arg.execp->redirect_fds, errmsg, sizeof(errmsg));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
pid = rb_fork(&status, 0, 0, Qnil);
|
pid = rb_fork(&status, 0, 0, Qnil);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user