diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/-test-/vm/at_exit.c | 44 | ||||
-rw-r--r-- | ext/-test-/vm/extconf.rb | 1 |
2 files changed, 45 insertions, 0 deletions
diff --git a/ext/-test-/vm/at_exit.c b/ext/-test-/vm/at_exit.c new file mode 100644 index 0000000000..6cfbfafa9e --- /dev/null +++ b/ext/-test-/vm/at_exit.c @@ -0,0 +1,44 @@ +#include <ruby/ruby.h> +#include <ruby/vm.h> + +static void +do_nothing(ruby_vm_t *vm) +{ +} + +static void +print_begin(ruby_vm_t *vm) +{ + printf("begin\n"); +} + +static void +print_end(ruby_vm_t *vm) +{ + printf("end\n"); +} + +static VALUE +register_at_exit(VALUE self, VALUE t) +{ + switch (t) { + case Qtrue: + ruby_vm_at_exit(print_begin); + break; + case Qfalse: + ruby_vm_at_exit(print_end); + break; + default: + ruby_vm_at_exit(do_nothing); + break; + } + return self; +} + +void +Init_at_exit(void) +{ + VALUE m = rb_define_module("Bug"); + VALUE c = rb_define_class_under(m, "VM", rb_cObject); + rb_define_singleton_method(c, "register_at_exit", register_at_exit, 1); +} diff --git a/ext/-test-/vm/extconf.rb b/ext/-test-/vm/extconf.rb new file mode 100644 index 0000000000..614ec960d8 --- /dev/null +++ b/ext/-test-/vm/extconf.rb @@ -0,0 +1 @@ +create_makefile('-test-/vm/at_exit') |