зеркало из https://github.com/github/ruby.git
small cleanup
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@32525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
c307523565
Коммит
7fd8266516
20
signal.c
20
signal.c
|
@ -1021,31 +1021,15 @@ static void
|
||||||
init_sigchld(int sig)
|
init_sigchld(int sig)
|
||||||
{
|
{
|
||||||
sighandler_t oldfunc;
|
sighandler_t oldfunc;
|
||||||
#if USE_TRAP_MASK
|
|
||||||
sigset_t mask;
|
|
||||||
sigset_t fullmask;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* disable interrupt. Otherwise following temmporal signal handler change
|
|
||||||
* has a race.
|
|
||||||
* Note: now we have only single thread, therefore both sigprocmask() and
|
|
||||||
* pthread_sigmask() makes the same effect.
|
|
||||||
*/
|
|
||||||
sigfillset(&fullmask);
|
|
||||||
pthread_sigmask(SIG_BLOCK, &fullmask, &mask);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
rb_disable_interrupt();
|
||||||
oldfunc = ruby_signal(sig, SIG_DFL);
|
oldfunc = ruby_signal(sig, SIG_DFL);
|
||||||
if (oldfunc != SIG_DFL && oldfunc != SIG_IGN) {
|
if (oldfunc != SIG_DFL && oldfunc != SIG_IGN) {
|
||||||
ruby_signal(sig, oldfunc);
|
ruby_signal(sig, oldfunc);
|
||||||
} else {
|
} else {
|
||||||
GET_VM()->trap_list[sig].cmd = 0;
|
GET_VM()->trap_list[sig].cmd = 0;
|
||||||
}
|
}
|
||||||
|
rb_enable_interrupt();
|
||||||
#if USE_TRAP_MASK
|
|
||||||
sigdelset(&mask, sig);
|
|
||||||
pthread_sigmask(SIG_SETMASK, &mask, NULL);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче