nobu.nakada / nifty.ne.jp writes:

> > typedef struct svn_error
> > {
> >   apr_status_t apr_err;      /* APR error value, possibly SVN_ custom err */
> >   int src_err;               /* native error code (e.g. errno, h_errno...) */
> >   const char *message;       /* details from producer of error */
> >   struct svn_error *child;   /* ptr to the error we "wrap" */
> >   apr_pool_t *pool;          /* The pool holding this error and any
> >                                 child errors it wraps */
> > } svn_error_t;
> 
>  後ろにくっつけるというのは無理なんでしょうか。大きさが同一で
> ないとまずいのならダメですが。
> 
> typedef struct rb_svn_error
> {
>   svn_error_t svn;
>   VALUE ruby;
> } rb_svn_error_t;

なるほど。これは可能だと思います。今 svn_error_t を再び眺め
ていて気付いたのですが、実は pool にはハッシュテーブルみたい
なものを持っていて、任意の値を関連付けて保存できるようなので、
それで何とかなりそうです。でも、GC 的には global に入れて 
rb_global_variable しておいた方が良いような気がしますが、ど
うなんでしょう。struct が VALUE を保持していて rb_errinfo の
値が違うものに変わったときに GC が行なわれると困るような気が
するのですが。

-- 
Yoshiki Hayashi