なかだです。 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はできる。 中田 伸悦