зеркало из https://github.com/github/ruby.git
* 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
This commit is contained in:
Родитель
2f56c64b4f
Коммит
38d3b013b7
|
@ -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>
|
Fri May 11 14:23:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
* parse.y (primary): begin/end block should be isolated from outside.
|
* parse.y (primary): begin/end block should be isolated from outside.
|
||||||
|
|
|
@ -212,7 +212,7 @@ th = Thread.new do
|
||||||
STDOUT.flush
|
STDOUT.flush
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
Thread.pass while th.running?
|
Thread.pass until th.stop? # this may stop inside lex_io_gets
|
||||||
Process.kill(:INT, $$)
|
Process.kill(:INT, $$)
|
||||||
th.join
|
th.join
|
||||||
EOS
|
EOS
|
||||||
|
|
2
thread.c
2
thread.c
|
@ -1300,7 +1300,7 @@ rb_threadptr_execute_interrupts_common(rb_thread_t *th)
|
||||||
thread_debug("rb_thread_execute_interrupts: %"PRIdVALUE"\n", err);
|
thread_debug("rb_thread_execute_interrupts: %"PRIdVALUE"\n", err);
|
||||||
|
|
||||||
if (err == eKillSignal || err == eTerminateSignal) {
|
if (err == eKillSignal || err == eTerminateSignal) {
|
||||||
th->errinfo = INT2FIX(TAG_FATAL);
|
th->errinfo = rb_exc_new2(rb_eInterrupt, "");
|
||||||
TH_JUMP_TAG(th, TAG_FATAL);
|
TH_JUMP_TAG(th, TAG_FATAL);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
Загрузка…
Ссылка в новой задаче