[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]