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/