初めまして。

今、Subversion (http://subversion.tigris.org/) の native
ruby binding を書いています。Subversion は C で書かれていて、
自前の error handling code を持っています。Subversion の
error は struct svn_error_t という構造体で、error が発生し得
る各関数の返り値は svn_error_t * になっています。Error は間
にある関数が catch しなければ call stack を順番に上っていき
ます。

Object によっては (例えば、svn_delta_edit_fns_t)、ruby -> C
code ... -> ruby のように呼びだされるので、最後の ruby の
method を呼出す部分では、途中の Subversion による error 処理
を実行させるため、rb_protect を使って exception を 
Subversion の error に変換しています。このときに、Subversion
binding を使って書いた ruby code の debug を容易にするために、
ruby の exception の情報を Subversion の error に持たせたい
のですが、extension moduleが ruby_errinfo の値を参照するのは 
API 上許されているのでしょうか? 実際に行なっているのは、
anException.to_s した結果を Subversion の error の文字列を保
持する部分に与える、というものです。(ちなみに、Subversion の 
error は call stack の一番上の C の binding で再び ruby の 
exception に変換されます)。あるいは、他に何か extension
module から exception object を取得するための方法があるので
しょうか?

-- 
Yoshiki Hayashi