From 1b4f379ba34bb48aa2144ff5a14b07ae4f4bc57e Mon Sep 17 00:00:00 2001 From: matz Date: Tue, 30 Nov 2004 17:28:17 +0000 Subject: [PATCH] * signal.c (sighandler): call handler immediately only for default handlers. [ruby-dev:25003] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7429 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ eval.c | 2 +- signal.c | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 07302f4628..44b05d7669 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Dec 1 02:21:02 2004 Yukihiro Matsumoto + + * signal.c (sighandler): call handler immediately only for default + handlers. [ruby-dev:25003] + Tue Nov 30 23:49:12 2004 Nobuyoshi Nakada * io.c (pipe_open): errno should be preserved for rb_sys_fail() when diff --git a/eval.c b/eval.c index 1d0d62018f..0462a1e7e3 100644 --- a/eval.c +++ b/eval.c @@ -9959,7 +9959,7 @@ static int rb_thread_switch(n) int n; { - rb_trap_immediate = (curr_thread->flags&0x100)?1:0; + rb_trap_immediate = (curr_thread->flags&(1<<8))?1:0; switch (n) { case 0: return 0; diff --git a/signal.c b/signal.c index c45d3c95f4..a2ffc088ec 100644 --- a/signal.c +++ b/signal.c @@ -417,7 +417,7 @@ sighandler(sig) ruby_signal(sig, sighandler); #endif - if (ATOMIC_TEST(rb_trap_immediate)) { + if (trap_list[sig].cmd == 0 && ATOMIC_TEST(rb_trap_immediate)) { IN_MAIN_CONTEXT(signal_exec, sig); ATOMIC_SET(rb_trap_immediate, 1); }