At Tue, 8 Jan 2002 00:18:26 +0900,
Lyle Johnson <ljohnson / resgen.com> wrote:
> > |Looking at the CVS version of Ruby, the declaration for rb_rescue2() in
> > |ruby.h isn't quite right when you're compiling under a C++ compiler. It
> > |currently reads:
> > |
> > |    VALUE rb_rescue2
> > |__((VALUE(*)(ANYARGS),VALUE,VALUE(*)(ANYARGS),VALUE,...));
> > |
> > |but should instead read:
> > |
> > |    VALUE rb_rescue2
> __((VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE),VALUE,...));
> >
> > I don't remember why I did this.  I guess I must had reason...
> 
> So... does that mean it will be fixed or not? If you look at the code for
> rb_rescue2() in eval.c it's pretty clear that those two function pointers
> (i.e. the first and third arguments to rb_rescue2) only take one argument
> and aren't intended to accept variable-length argument lists.

Actually I added the nested prototype arguments, because some
callback functions take VALUE* instead of VALUE, and others
take no arguments.  Just to avoid casting.

-- 
Nobu Nakada