From: matz@... (Yukihiro Matsumoto) Date: 1998-06-16T13:44:01+09:00 Subject: [ruby-dev:2882] Re: TkMenu's bug まつもと ゆきひろです In message "[ruby-dev:2881] Re: [ruby-list:8337] Re: TkMenu's bug" on 98/06/16, NAGAI Hidetoshi writes: |永井@知能.九工大です. |そこでですが,TkUtil.eval_cmd で ruby の実行結果を文字列に変換して |返すようにはできないでしょうか? tkutilのレベルではTkUtil.eval_cmdを評価結果をそのまま返すよ うにしようと思います.その後,install_cmdなどをどう取扱うか はまた別として.とりあえずパッチを付けますから,それを元にど のようにするのがよいのか検討しましょう. --- intern.h 1998/05/25 04:57:38 1.1.1.1.2.20 +++ intern.h 1998/06/16 04:42:18 @@ -105,3 +105,3 @@ void ruby_run _((void)); -void rb_eval_cmd _((VALUE, VALUE)); +VALUE rb_eval_cmd _((VALUE, VALUE)); void rb_trap_eval _((VALUE, int)); --- eval.c 1998/06/16 04:23:26 1.1.1.2.2.63 +++ eval.c 1998/06/16 04:42:21 @@ -1043,3 +1043,3 @@ -void +VALUE rb_eval_cmd(cmd, arg) --- tcltklib.c 1998/06/16 04:24:35 1.1.1.1.2.8 +++ ext/tcltklib/tcltklib.c 1998/06/16 04:33:15 @@ -122,2 +122,3 @@ + Tcl_ResetResult(ptr->ip); if (failed) { |その関連で,Tk.tk_call('ruby', 'TkButton.new.path') なんてのを |試していたのですが,これ,戻り値が '.w0010.w0010' などと |いうようになってしまいます. |これは tcltklib.c の 135 行目付近, |Tcl_AppendResult(...) の直前に Tcl_ResetResult(...) を行うことで |きちんと '.w0010' となり解消されますが, |本当にこの修正でいいのでしょうか? 以前にも同じような問題がありましたから,それで良いと思います. これもパッチを付けておきます. --- tkutil.c 1998/01/16 12:36:03 1.1.1.1.4.1 +++ ext/tkutil/tkutil.c 1998/06/16 04:35:21 @@ -20,4 +20,3 @@ rb_scan_args(argc, argv, "1*", &cmd, &rest); - rb_eval_cmd(cmd, rest); - return Qnil; + return rb_eval_cmd(cmd, rest); }