diff options
Diffstat (limited to 'mrbgems/mruby-exit/src/mruby-exit.c')
| -rw-r--r-- | mrbgems/mruby-exit/src/mruby-exit.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/mrbgems/mruby-exit/src/mruby-exit.c b/mrbgems/mruby-exit/src/mruby-exit.c index 726dfd7c4..4ff2f932c 100644 --- a/mrbgems/mruby-exit/src/mruby-exit.c +++ b/mrbgems/mruby-exit/src/mruby-exit.c @@ -1,15 +1,20 @@ #include <stdlib.h> -#include "mruby.h" +#include <mruby.h> static mrb_value f_exit(mrb_state *mrb, mrb_value self) { - mrb_int i = EXIT_SUCCESS; + mrb_value status = mrb_true_value(); + int istatus; + + mrb_get_args(mrb, "|o", &status); + istatus = mrb_true_p(status) ? EXIT_SUCCESS : + mrb_false_p(status) ? EXIT_FAILURE : + (int)mrb_int(mrb, status); + exit(istatus); - mrb_get_args(mrb, "|i", &i); - exit(i); /* not reached */ - return mrb_nil_value(); + return status; } void |
