まつもと ゆきひろです

In message "[ruby-dev:1505] final.rb:35: [BUG] bug in variable assignment"
    on 98/02/21, Shugo Maeda <shugo / po.aianet.ne.jp> writes:

|前田です。
|
|1.1b8でfinal.rbを使うとcore dumpするようです。
|require 'sync'しているスクリプトで落ちました。

わかりました.finalizersを呼ぶ時点でオブジェクトが既にfreeさ
れている場合がありました.以下にパッチを付けておきます.

--
diff -u -1 -r1.1.1.2.2.5 gc.c
--- gc.c	1998/02/18 01:56:39	1.1.1.2.2.5
+++ gc.c	1998/02/25 03:41:30
@@ -990,2 +990,3 @@
 
+    /* run finalizers */
     for (i = 0; i < heaps_used; i++) {
@@ -994,2 +995,9 @@
 	    run_final(p);
+	    p++;
+	}
+    }
+    /* run data object's finaliers */
+    for (i = 0; i < heaps_used; i++) {
+	p = heaps[i]; pend = p + HEAP_SLOTS;
+	while (p < pend) {
 	    if (BUILTIN_TYPE(p) == T_DATA &&