summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2019-11-23 06:25:02 +0900
committerGitHub <[email protected]>2019-11-23 06:25:02 +0900
commit56f9106d94bce48daf60a8d18a0792f98c204bbe (patch)
tree9cdcb0c8be3481e7ad0060fe3cd7dba11ff40f20
parent8bcf44669cdeea0233c35f0216b789bb27ae6426 (diff)
parentd81e4d71c17f9d65ea87f0e66a4338411863f7bf (diff)
downloadmruby-56f9106d94bce48daf60a8d18a0792f98c204bbe.tar.gz
mruby-56f9106d94bce48daf60a8d18a0792f98c204bbe.zip
Merge pull request #4836 from shuujii/allow-true-false-argument-to-Kernel-exit
Allow `true`/`false` argument to `Kernel#exit`
-rw-r--r--mrbgems/mruby-exit/src/mruby-exit.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/mrbgems/mruby-exit/src/mruby-exit.c b/mrbgems/mruby-exit/src/mruby-exit.c
index 05c929622..4ff2f932c 100644
--- a/mrbgems/mruby-exit/src/mruby-exit.c
+++ b/mrbgems/mruby-exit/src/mruby-exit.c
@@ -4,12 +4,17 @@
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((int)i);
/* not reached */
- return mrb_nil_value();
+ return status;
}
void