diff --git a/ChangeLog b/ChangeLog index 044d5c11a6..4e3d016cf1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,11 +1,3 @@ -Fri May 11 22:54:22 2012 NARUSE, Yui - - * thread.c (rb_threadptr_execute_interrupts_common): th->errinfo is - not Fixnum, but exception object. - This causes test_signal_requiring of test/ruby/test_signal.rb fail - if the sub process is killed on waiting IO in lex_io_gets in require - itself, not sleep. - Fri May 11 14:23:11 2012 Nobuyoshi Nakada * parse.y (primary): begin/end block should be isolated from outside. diff --git a/test/ruby/test_signal.rb b/test/ruby/test_signal.rb index 6b97ae78bd..0e3af06d7b 100644 --- a/test/ruby/test_signal.rb +++ b/test/ruby/test_signal.rb @@ -212,7 +212,7 @@ th = Thread.new do STDOUT.flush end end -Thread.pass until th.stop? # this may stop inside lex_io_gets +Thread.pass while th.running? Process.kill(:INT, $$) th.join EOS diff --git a/thread.c b/thread.c index 5fb19547cd..27504e5e2e 100644 --- a/thread.c +++ b/thread.c @@ -1300,7 +1300,7 @@ rb_threadptr_execute_interrupts_common(rb_thread_t *th) thread_debug("rb_thread_execute_interrupts: %"PRIdVALUE"\n", err); if (err == eKillSignal || err == eTerminateSignal) { - th->errinfo = rb_exc_new2(rb_eInterrupt, ""); + th->errinfo = INT2FIX(TAG_FATAL); TH_JUMP_TAG(th, TAG_FATAL); } else {