diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-05-11 14:03:40 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-05-11 14:03:40 +0000 |
commit | 38d3b013b7733d9ccd66c011d74c00b35bb704c4 (patch) | |
tree | 89758941ee1047425a466bd49f1048b66949b53c | |
parent | 2f56c64b4f4686e7a5adac3dc486319694ad2828 (diff) | |
download | ruby-38d3b013b7733d9ccd66c011d74c00b35bb704c4.tar.gz |
* 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.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35622 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | test/ruby/test_signal.rb | 2 | ||||
-rw-r--r-- | thread.c | 2 |
3 files changed, 10 insertions, 2 deletions
@@ -1,3 +1,11 @@ +Fri May 11 22:54:22 2012 NARUSE, Yui <naruse@ruby-lang.org> + + * 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 <nobu@ruby-lang.org> * 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 0e3af06d7b..6b97ae78bd 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 while th.running? +Thread.pass until th.stop? # this may stop inside lex_io_gets Process.kill(:INT, $$) th.join EOS @@ -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 = INT2FIX(TAG_FATAL); + th->errinfo = rb_exc_new2(rb_eInterrupt, ""); TH_JUMP_TAG(th, TAG_FATAL); } else { |