まつもと ゆきひろです

In message "[ruby-dev:18445] Re: [ruby-cvs] ruby/ext/tcltklib: * eval.c (ruby_run): should set toplevel visibility again here."
    on 02/10/03, nobu.nakada / nifty.ne.jp <nobu.nakada / nifty.ne.jp> writes:

|> |たしかPUSH_ITER(ITER_CUR)してなくてできないので、rb_proc_new()
|> |が必要だったような気がするのですが。
|> |
|> |      *(q->result) = rb_funcall(rb_iterate(rb_f_lambda, 0, ivq_safelevel_handler, 
|> |					   Data_Wrap_Struct(rb_cData,0,0,q)), 
|> |				rb_intern("call"), 0);
|> 
|> あれえ、できなかったっけか。
|
|ように思うんですが。そもそもこのivq_safelevel_handlerがどういう
|ときに呼ばれるかよく分かってなくてテストしてないんですが、こう
|いうサンプルではエラーになります。

そうみたいですね。中田さんのパッチのほうにしましょうか。

|$ ruby-1.6 -v -rlambda -e0
|ruby-1.6: tried to create Proc object without a block (ArgumentError)
|ruby 1.6.8 (2002-10-02) [i686-linux]
|
|うーん、拡張ライブラリで例外が起きたときのファイル名がおかしい…。

初期化の途中では__FILE__がargv[0]になっているせいでしょうね。
-rでの拡張モジュールのロード中ではこれがせいいぱいではないか
と。

で、このパッチは具体的になにを修正するもんなんですかね。