まつもと ゆきひろです

In message "[ruby-dev:22594] Re: empty proc equality"
    on 04/01/16, nobu.nakada / nifty.ne.jp <nobu.nakada / nifty.ne.jp> writes:

|> えぇと、proc というのは closure ですから環境が入っていて、それが異なる
|> のもよろしくないんじゃないでしょうか。
|
|なるほど。これだけで充分でしょうか。

|-    if (data->body == data2->body) return Qtrue;
|-    return Qfalse;
|+    if (data->body != data2->body) return Qfalse;
|+    if (data->var != data2->var) return Qfalse;
|+    if (data->frame.uniq != data2->frame.uniq) return Qfalse;
|+    return Qtrue;
| }

varの比較は不要かも。

--- eval.c	10 Jan 2004 17:39:04 -0000	1.627
+++ eval.c	16 Jan 2004 04:36:52 -0000
@@ -8214,3 +8214,6 @@ proc_eq(self, other)
     Data_Get_Struct(other, struct BLOCK, data2);
-    if (data->body == data2->body) return Qtrue;
+    if (data->body == data2->body) {
+	if (data->frame.uniq != data2->frame.uniq) return Qfalse;
+	return Qtrue;
+    }
     return Qfalse;