From d45d448d71bfe9db4a71e06289e7b4d640bbd55c Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 16 Jul 2019 21:38:25 +0900 Subject: [PATCH] nil as the default of optional parameters --- process.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/process.c b/process.c index 9fb40aaacb..f1cd802f95 100644 --- a/process.c +++ b/process.c @@ -1992,6 +1992,7 @@ rb_execarg_addopt_rlimit(struct rb_execarg *eargp, int rtype, VALUE val) } #endif +#define TO_BOOL(val, name) NIL_P(val) ? 0 : rb_bool_expected((val), name) int rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val) { @@ -2039,7 +2040,7 @@ rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val) rb_raise(rb_eArgError, "new_pgroup option specified twice"); } eargp->new_pgroup_given = 1; - eargp->new_pgroup_flag = rb_bool_expected(val, "new_pgroup"); + eargp->new_pgroup_flag = TO_BOOL(val, "new_pgroup"); } else #endif @@ -2048,7 +2049,7 @@ rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val) rb_raise(rb_eArgError, "unsetenv_others option specified twice"); } eargp->unsetenv_others_given = 1; - eargp->unsetenv_others_do = rb_bool_expected(val, "unsetenv_others"); + eargp->unsetenv_others_do = TO_BOOL(val, "unsetenv_others"); } else if (id == id_chdir) { if (eargp->chdir_given) { @@ -2072,7 +2073,7 @@ rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val) rb_raise(rb_eArgError, "close_others option specified twice"); } eargp->close_others_given = 1; - eargp->close_others_do = rb_bool_expected(val, "close_others"); + eargp->close_others_do = TO_BOOL(val, "close_others"); } else if (id == id_in) { key = INT2FIX(0); @@ -2121,7 +2122,7 @@ rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val) rb_raise(rb_eArgError, "exception option specified twice"); } eargp->exception_given = 1; - eargp->exception = rb_bool_expected(val, "exception"); + eargp->exception = TO_BOOL(val, "exception"); } else { return ST_STOP; @@ -6483,11 +6484,8 @@ proc_daemon(int argc, VALUE *argv) int n, nochdir = FALSE, noclose = FALSE; switch (rb_check_arity(argc, 0, 2)) { - case 2: - if (!NIL_P(argv[1])) noclose = rb_bool_expected(argv[1], "noclose"); - /* fallthrough */ - case 1: - if (!NIL_P(argv[0])) nochdir = rb_bool_expected(argv[0], "nochdir"); + case 2: noclose = TO_BOOL(argv[1], "noclose"); + case 1: nochdir = TO_BOOL(argv[0], "nochdir"); } prefork();