[#23884] Ruby 1.8.2 preview1にむけて — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

34 messages 2004/07/13
[#23917] Re: Ruby 1.8.2 preview1にむけて — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/07/16

山本です。

[#23920] Re: Ruby 1.8.2 preview1にむけて — "NAKAMURA, Hiroshi" <nakahiro@...> 2004/07/16

なひです。

[#23922] ruby 1.8.2 preview1 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

27 messages 2004/07/16

[#23995] String#each -> String#each_char — Shugo Maeda <shugo@...>

前田です。

27 messages 2004/07/30
[#23996] Re: String#each -> String#each_char — matz@... (Yukihiro Matsumoto) 2004/07/30

まつもと ゆきひろです

[#23997] Re: String#each -> String#each_char — "U.Nakamura" <usa@...> 2004/07/30

こんにちは、なかむら(う)です。

[#23999] Re: String#each -> String#each_char — matz@... (Yukihiro Matsumoto) 2004/07/30

まつもと ゆきひろです

[#24000] Re: String#each -> String#each_char — "U.Nakamura" <usa@...> 2004/07/30

こんにちは、なかむら(う)です。

[#24005] Re: String#each -> String#each_char — Minero Aoki <aamine@...> 2004/07/31

青木です。

[#24012] Re: String#each -> String#each_char — Shugo Maeda <shugo@...> 2004/08/01

前田です。

[#24014] Re: String#each -> String#each_char — Minero Aoki <aamine@...> 2004/08/02

青木です。

[ruby-dev:23961] Re: ruby 1.8.2 preview1

From: matz@... (Yukihiro Matsumoto)
Date: 2004-07-23 07:47:22 UTC
List: ruby-dev #23961
まつもと ゆきひろです

In message "[ruby-dev:23960] Re: ruby 1.8.2 preview1"
    on 04/07/23, "U.Nakamura" <usa@garbagecollect.jp> writes:

|以前は、ファイナライザを格納していたArrayの各要素はProcだった
|のに、以下の変更で各要素がNodeになってしまったのが原因です。
|ObjectSpace.each_objectでこのNodeがそのまま出てきてしまうため
|にSEGVとなっています。
|
|どう直すのがいいでしょうね。
|# なかださんはちょうど旅行中なんだよなあ...

原因が分かれば直すのは難しくありません。こんな感じで直るので
はないでしょうか。

--- gc.c	8 Jul 2004 10:27:23 -0000	1.181
+++ gc.c	23 Jul 2004 07:42:20 -0000
@@ -1687,4 +1687,2 @@ undefine_final(os, obj)
 
-#define NODE_FINAL NODE_LIT
-
 /*
@@ -1717,3 +1715,3 @@ define_final(argc, argv, os)
 
-    block = (VALUE)rb_node_newnode(NODE_FINAL, block, ruby_safe_level, 0);
+    block = rb_ary_new3(2, INT2FIX(ruby_safe_level), block);
 
@@ -1770,5 +1768,5 @@ run_final(obj)
 	for (i=0; i<RARRAY(table)->len; i++) {
-	    NODE *final = (NODE *)RARRAY(table)->ptr[i];
-	    args[0] = final->nd_lit;
-	    args[2] = final->nd_nth;
+	    VALUE final = RARRAY(table)->ptr[i];
+	    args[0] = FIX2INT(RARRAY(final)->ptr[0]);
+	    args[2] = RARRAY(final)->ptr[1];
 	    rb_protect((VALUE(*)_((VALUE)))run_single_final, (VALUE)args, &status);

In This Thread