From: Ryan Davis Date: 2007-04-18T06:49:50+09:00 Subject: backwards compatibility for 'raise Interrupt' ** BEFORE: % ./ruby -ve 'raise Interrupt'; ruby -ve 'raise Interrupt' ruby 1.8.6 (2007-03-24 patchlevel 5000) [i686-darwin8.9.1] -e:1:in `initialize': wrong number of arguments (0 for 1) (ArgumentError) from -e:1:in `exception' from -e:1:in `raise' from -e:1 ruby 1.8.5 (2006-08-25) [i686-darwin8.8.1] -e:1: Interrupt (Interrupt) ** AFTER: % ./ruby -ve 'raise Interrupt'; ruby -ve 'raise Interrupt' ruby 1.8.6 (2007-03-24 patchlevel 5000) [i686-darwin8.9.1] -e:1: Interrupt (Interrupt) ruby 1.8.5 (2006-08-25) [i686-darwin8.8.1] -e:1: Interrupt (Interrupt) ** PATCH: Index: signal.c =================================================================== --- signal.c (revision 12131) +++ signal.c (working copy) @@ -264,14 +264,18 @@ } static VALUE -interrupt_init(self, mesg) - VALUE self, mesg; +interrupt_init(argc, argv, self) + int argc; + VALUE *argv; + VALUE self; { - VALUE argv[2]; + VALUE args[2]; + VALUE mesg; - argv[0] = INT2FIX(SIGINT); - argv[1] = mesg; - return rb_call_super(2, argv); + rb_scan_args(argc, argv, "01", &mesg); + args[0] = INT2FIX(SIGINT); + args[1] = mesg; + return rb_call_super(2, args); } void @@ -1071,7 +1075,7 @@ rb_define_method(rb_eSignal, "initialize", esignal_init, -1); rb_attr(rb_eSignal, rb_intern("signo"), 1, 0, 0); rb_alias(rb_eSignal, rb_intern("signm"), rb_intern("message")); - rb_define_method(rb_eInterrupt, "initialize", interrupt_init, 1); + rb_define_method(rb_eInterrupt, "initialize", interrupt_init, -1); install_sighandler(SIGINT, sighandler); #ifdef SIGHUP