From: matz@... (Yukihiro Matsumoto) Date: 2004-07-23T16:47:22+09:00 Subject: [ruby-dev:23961] Re: ruby 1.8.2 preview1 まつもと ゆきひろです In message "[ruby-dev:23960] Re: ruby 1.8.2 preview1" on 04/07/23, "U.Nakamura" 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; ilen; 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);