diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-02-25 03:08:40 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-02-25 03:08:40 +0000 |
commit | f22408444068c7893f7f20bbc0ee7522527243dc (patch) | |
tree | 9bfeff9b5a2d780ed44b8df98bed92827465814d /process.c | |
parent | 7e31e271061d06124d71a74f72899d2c38e51a4d (diff) | |
download | ruby-f22408444068c7893f7f20bbc0ee7522527243dc.tar.gz |
guard before noreturn function
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62571 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'process.c')
-rw-r--r-- | process.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -4097,8 +4097,9 @@ rb_f_system(int argc, VALUE *argv) if (pid < 0) { if (eargp->exception) { int err = errno; - rb_syserr_fail_str(err, eargp->invoke.sh.shell_script); + VALUE command = eargp->invoke.sh.shell_script; RB_GC_GUARD(execarg_obj); + rb_syserr_fail_str(err, command); } else { return Qnil; @@ -4107,11 +4108,12 @@ rb_f_system(int argc, VALUE *argv) status = PST2INT(rb_last_status_get()); if (status == EXIT_SUCCESS) return Qtrue; if (eargp->exception) { + VALUE command = eargp->invoke.sh.shell_script; VALUE str = rb_str_new_cstr("Command failed with"); rb_str_cat_cstr(pst_message_status(str, status), ": "); - rb_str_append(str, eargp->invoke.sh.shell_script); - rb_exc_raise(rb_exc_new_str(rb_eRuntimeError, str)); + rb_str_append(str, command); RB_GC_GUARD(execarg_obj); + rb_exc_raise(rb_exc_new_str(rb_eRuntimeError, str)); } else { return Qfalse; |