+ argv = rb_ary_new2 (5);
+ rb_ary_store (argv, 0, * (VALUE *) data /* function */);
+ rb_ary_store (argv, 1, eventv);
+ rb_ary_store (argv, 2, event_handlev);
+ rb_ary_store (argv, 3, bufv);
+ rb_ary_store (argv, 4, arrayv);
+
+ rb_rescue (ruby_event_callback_wrapper_wrapper, argv,
+ ruby_event_callback_handle_exception, Qnil);
+}
+
+static VALUE
+ruby_event_callback_wrapper_wrapper (VALUE argv)
+{
+ VALUE fn, eventv, event_handlev, bufv, arrayv;
+
+ fn = rb_ary_entry (argv, 0);
+ eventv = rb_ary_entry (argv, 1);
+ event_handlev = rb_ary_entry (argv, 2);
+ bufv = rb_ary_entry (argv, 3);
+ arrayv = rb_ary_entry (argv, 4);
+
+ rb_funcall (fn, rb_intern (\"call\"), 4,