ruby-changes:4800
From: ko1@a...
Date: Mon, 5 May 2008 17:19:54 +0900 (JST)
Subject: [ruby-changes:4800] akr - Ruby:r16294 (trunk): * eval.c (ruby_cleanup): wrap ruby_finalize_0 by SAVE_ROOT_JMPBUF to
akr 2008-05-05 17:19:35 +0900 (Mon, 05 May 2008) New Revision: 16294 Modified files: trunk/ChangeLog trunk/eval.c Log: * eval.c (ruby_cleanup): wrap ruby_finalize_0 by SAVE_ROOT_JMPBUF to avoid SEGV by at_exit { Fiber.new{}.resume } on IA64. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=16294&r2=16293&diff_format=u http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/eval.c?r1=16294&r2=16293&diff_format=u Index: ChangeLog =================================================================== --- ChangeLog (revision 16293) +++ ChangeLog (revision 16294) @@ -1,3 +1,8 @@ +Mon May 5 17:17:40 2008 Tanaka Akira <akr@f...> + + * eval.c (ruby_cleanup): wrap ruby_finalize_0 by SAVE_ROOT_JMPBUF to + avoid SEGV by at_exit { Fiber.new{}.resume } on IA64. + Mon May 5 12:12:11 2008 Yukihiro Matsumoto <matz@r...> * array.c (rb_ary_slice_bang): should adjust length before making Index: eval.c =================================================================== --- eval.c (revision 16293) +++ eval.c (revision 16294) @@ -164,7 +164,13 @@ errs[1] = th->errinfo; th->safe_level = 0; Init_stack((void *)&state); - ruby_finalize_0(); + + PUSH_TAG(); + if ((state = EXEC_TAG()) == 0) { + SAVE_ROOT_JMPBUF(th, ruby_finalize_0()); + } + POP_TAG(); + errs[0] = th->errinfo; PUSH_TAG(); if ((state = EXEC_TAG()) == 0) { -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/