なかだです。 At Tue, 21 Oct 2003 14:42:13 +0000, matz wrote: > > matz Tue, 21 Oct 2003 14:42:13 +0000 > > Modified files: > ruby: > ChangeLog eval.c file.c > Log: > * eval.c (ruby_cleanup): call finalizers and exit procs before > terminating threads. > > * eval.c (ruby_cleanup): preserve ruby_errinfo before ruby_finalize_0(). END{}の中でのexitの引数が無視されるようになっています。
Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.571 diff -u -2 -p -r1.571 eval.c --- eval.c 21 Oct 2003 14:42:12 -0000 1.571 +++ eval.c 21 Oct 2003 15:46:32 -0000 @@ -1345,8 +1345,9 @@ ruby_cleanup(ex) { int state; - volatile VALUE err = ruby_errinfo; + volatile VALUE err = ruby_errinfo, err2; ruby_safe_level = 0; ruby_finalize_0(); + err2 = ruby_errinfo; PUSH_TAG(PROT_NONE); PUSH_ITER(ITER_NOT); @@ -1364,6 +1365,6 @@ ruby_cleanup(ex) ruby_finalize_1(); - if (err && rb_obj_is_kind_of(err, rb_eSystemExit)) { - VALUE st = rb_iv_get(err, "status"); + if (err2 && rb_obj_is_kind_of(err2, rb_eSystemExit)) { + VALUE st = rb_iv_get(err2, "status"); return NUM2INT(st); }
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦