From: Masao M. <mu...@hi...> - 2006-06-17 11:09:30
|
むとうです。 On Sat, 17 Jun 2006 18:29:26 +0900 Masao Mutoh <mu...@hi...> wrote: > むとうです。 > > これなのですが、まぁ、今までの動作は置いておいて、 > > さかいさんのおっしゃるとおり、rb_protect()していない > > gtk_m_functionのバグで、そちらを修正した方が良さそうです。 > > なおしました。 > > まず、Ruby/GLib2にG_PROTECT_CALLBACKというマクロを追加しました。 > これで囲んだ関数内で例外が発生するとエラーメッセージを出して > 異常終了します。 > > ここで、異常終了(exit(EXIT_FAILURE);)をさせてしまうのが > rclosure_marshal_do()の今までの実装と異なります。 > rclosure_marshal_do()もこちらのマクロを使うように変更しました > ので、今後は「メインループ内に登録したブロック内でエラーが発生した場合は > エラーメッセージを表示した上で異常終了する」 > ということになります。 > > もしかしたら、Gtk.timeout_add等で例外が上がっても続いて欲しい・・・ > というニーズがあるかと思ったのですが、やっぱりそこは、アプリ作者の > 人が自分で例外を捕捉すべきと考え、exitしちゃうことにしました。 > > 問題がありましたら言ってください。 強制的に終了してしまうしか手が無いとすると例えばデバッガなどで困ることも あるかと思い直し、GLib.exit_applicationというモジュール関数を作り それを呼び出すことにしました。 どうしても終了したくない場合はそちらをオーバーライドするということになります。 -- .:% Masao Mutoh<mu...@hi...> |