From: "H.Yamamoto" Date: 2005-08-06T14:13:41+09:00 Subject: [ruby-dev:26753] some questions about tcltklib.c 山本です。 現在 tcltklib.c をリファクタリングしていますが、tcl_protect と tcl_check_result を 統合しようとして問題につきあたりました。 1. ip_ruby_cmd_body に下のような部分があるのですが、これを残したまま統合するのは 難しそうです。rb_rescue2 は例外をブロックしませんし、例外を通してしまうと tcl 環境をまたいでスタック破壊してしまうことがわかった以上、もはやこのコードは 安全ではなく、残していてもしかたないと思います。消してもいいでしょうか? (できれば tcl_check_result の #if 0 (SystemExit) も消したいです) #if 0 ret = rb_rescue2(ip_ruby_cmd_core, (VALUE)arg, ip_ruby_cmd_rescue, arg->failed, rb_eStandardError, rb_eScriptError, rb_eSystemExit, (VALUE)0); #else 2. tcl_protect に下のような部分があるのですが、rb_jump_tag で例外を発生してしまうと、 上述の理由でスタック破壊につながります。ここはどう対処すべきでしょうか。 case TAG_RETRY: case TAG_REDO: if (NIL_P(ruby_errinfo)) { rb_jump_tag(status); /* danger */ 以上の二点です。よろしくお願いします。