なかだです。

At Tue, 17 Aug 2004 23:50:39 +0900,
Tanaka Akira wrote in [ruby-dev:24103]:
> 
> 次のように、binding, eval, instance_eval, class 変数を使うと、core を
> 吐きます。
> 
> % ruby -v -e '
> def nil.b
>   binding
> end
> bb = eval("nil.instance_eval \"binding\"", nil.b)
> eval("@@a", bb)
> '
> ruby 1.9.0 (2004-08-14) [i686-linux]
> zsh: segmentation fault (core dumped)  ruby -v -e 

nilだけじゃなくてSPECIAL CONST全般ですね。単純に考えるとこれで
いいのではないかと思うのですが。


Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.686 diff -u -2 -p -r1.686 eval.c --- eval.c 2 Aug 2004 08:52:53 -0000 1.686 +++ eval.c 18 Aug 2004 01:41:45 -0000 @@ -6381,12 +6381,5 @@ rb_obj_instance_eval(argc, argv, self) VALUE self; { - VALUE klass; - - if (rb_special_const_p(self)) { - klass = Qnil; - } - else { - klass = rb_singleton_class(self); - } + VALUE klass = rb_singleton_class(self); return specific_eval(argc, argv, klass, self);
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦