From: Hidetoshi NAGAI Date: 2005-08-06T22:37:14+09:00 Subject: [ruby-dev:26756] Re: some questions about tcltklib.c 永井@知能.九工大です. From: H.Yamamoto Subject: [ruby-dev:26753] some questions about tcltklib.c Date: Sat, 6 Aug 2005 14:13:41 +0900 Message-ID: <20050806141340.BE90F048.ocean@m2.ccsnet.ne.jp> > 1. ip_ruby_cmd_body に下のような部分があるのですが、これを残したまま統合するのは > 難しそうです。rb_rescue2 は例外をブロックしませんし、例外を通してしまうと > tcl 環境をまたいでスタック破壊してしまうことがわかった以上、もはやこのコードは > 安全ではなく、残していてもしかたないと思います。消してもいいでしょうか? これら #if 0 で囲んでいる部分のほとんどは, 「こうするのは試してみたけどダメ or 今一つだったので, 変更しようと考えてもこうはしないでね」というような 気持ちの残骸ですので,消してもかまいません. > 2. tcl_protect に下のような部分があるのですが、rb_jump_tag で例外を発生してしまうと、 > 上述の理由でスタック破壊につながります。ここはどう対処すべきでしょうか。 ruby ─(invoke)→ tcl ─(callback)→ ruby ↑ ↓ └─────────────────┘(redo or retry) という状況ですよね. う〜む,ちょっと考えさせてください. continue などの tcl のリターンコードを返すようにした上で tcl に戻り, tcl の中でそれが捉えられずに抜けてくるようなら, その段階で redo 等を再発生させるというように, 段階的に引き渡していく必要がありそうです. -- 永井 秀利 (九工大 知能情報) nagai@ai.kyutech.ac.jp