[ruby-dev:24217] Re: 1.instance_eval "@@a" dumps core

From: Yukihiro Matsumoto <matz@...>
Date: 2004-09-03 16:40:46 UTC
List: ruby-dev #24217
まつもと ゆきひろです

In message "Re: [ruby-dev:24213] 1.instance_eval "@@a" dumps core"
    on Fri, 3 Sep 2004 18:40:57 +0900, Tanaka Akira <akr@m17n.org> writes:
|
|次のように、1.instance_eval "@@a" とすると core を吐きます。

[ruby-dev:24103]と同根でした。しかも、

  class Fixnum
    def b
      binding
    end
  end
  bb = eval("1.instance_eval \"binding\"", 1.b)
  eval("@@a", bb)

がcoreを吐くのでこのときの修正が不完全であったことも露呈しま
した。ということで、以下のように修正してみました。

--- eval.c	3 Sep 2004 09:00:51 -0000	1.693
+++ eval.c	3 Sep 2004 16:40:06 -0000
@@ -1781,2 +1781,5 @@ cvar_cbase()
     }
+    if (NIL_P(cref->nd_clss)) {
+	rb_raise(rb_eTypeError, "no class variables available");
+    }
     return cref->nd_clss;

In This Thread