diff --git a/include/mruby/error.h b/include/mruby/error.h index dbe4bf7584..cc84e309c0 100644 --- a/include/mruby/error.h +++ b/include/mruby/error.h @@ -26,7 +26,7 @@ struct RException { #define MRB_EXC_EXIT 65536 #define MRB_EXC_EXIT_P(e) ((e)->flags & MRB_EXC_EXIT) /* retrieve status value from exc; need and */ -#define MRB_EXC_EXIT_STATUS(mrb,e) ((int)mrb_as_int((mrb),mrb_obj_iv_get((mrb),(e),MRB_SYM(status)))) +#define MRB_EXC_EXIT_STATUS(mrb,e) ((int)mrb_as_int((mrb),mrb_obj_iv_get((mrb),(e),MRB_IVSYM(status)))) /* exit with SystemExit status */ #define MRB_EXC_CHECK_EXIT(mrb,e) do {if (MRB_EXC_EXIT_P(e)) exit(MRB_EXC_EXIT_STATUS((mrb),(e)));} while (0) diff --git a/mrbgems/mruby-exit/mrblib/mruby-exit.rb b/mrbgems/mruby-exit/mrblib/mruby-exit.rb new file mode 100644 index 0000000000..477582ba83 --- /dev/null +++ b/mrbgems/mruby-exit/mrblib/mruby-exit.rb @@ -0,0 +1,5 @@ +class SystemExit + def status + @status + end +end diff --git a/mrbgems/mruby-exit/src/mruby_exit.c b/mrbgems/mruby-exit/src/mruby_exit.c index 13da43201e..1ba0fea660 100644 --- a/mrbgems/mruby-exit/src/mruby_exit.c +++ b/mrbgems/mruby-exit/src/mruby_exit.c @@ -44,7 +44,7 @@ f_exit(mrb_state *mrb, mrb_value self) mrb_value exc = mrb_obj_new(mrb, mrb_exc_get_id(mrb, MRB_SYM(SystemExit)), 0, NULL); struct RException *e = mrb_exc_ptr(exc); e->flags |= MRB_EXC_EXIT; - mrb_iv_set(mrb, exc, MRB_SYM(status), mrb_int_value(mrb, (mrb_int)status)); + mrb_iv_set(mrb, exc, MRB_IVSYM(status), mrb_int_value(mrb, (mrb_int)status)); mrb_exc_raise(mrb, exc); /* not reached */ return mrb_nil_value();