** 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