summaryrefslogtreecommitdiff
path: root/process.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-05-02 04:02:32 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-05-02 04:02:32 +0000
commitce3029cd19dc40f4ffe09b8c6633500bd182b324 (patch)
tree2b935aac155a210fe18f95bfde60919d2dffda9e /process.c
parent30afde959bf6434e9cdd31330fdaedd6d070be61 (diff)
process.c: fix failed status with spawnv
* process.c (proc_spawn_cmd_internal, proc_spawn_sh): spawn() with P_NOWAIT returns process ID, so it must not be set as a status. * process.c (rb_spawn_process): set failed status on error on platforms using spawnv not only on Windows. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@40552 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'process.c')
-rw-r--r--process.c4
1 files changed, 0 insertions, 4 deletions
diff --git a/process.c b/process.c
index 753e27ec09..13b1c778cd 100644
--- a/process.c
+++ b/process.c
@@ -1395,7 +1395,6 @@ proc_spawn_cmd_internal(char **argv, char *prog)
after_exec();
if (status == -1) errno = ENOEXEC;
}
- rb_last_status_set(status == -1 ? 127 : status, 0);
return status;
}
#endif
@@ -1431,7 +1430,6 @@ proc_spawn_sh(char *str)
char *shell = dln_find_exe_r("sh", 0, fbuf, sizeof(fbuf));
before_exec();
status = spawnl(P_NOWAIT, (shell ? shell : "/bin/sh"), "sh", "-c", str, (char*)NULL);
- rb_last_status_set(status == -1 ? 127 : status, 0);
after_exec();
return status;
}
@@ -3686,10 +3684,8 @@ rb_spawn_process(struct rb_execarg *eargp, char *errmsg, size_t errmsg_buflen)
char **argv = ARGVSTR2ARGV(eargp->invoke.cmd.argv_str);
pid = proc_spawn_cmd(argv, prog, eargp);
}
-# if defined(_WIN32)
if (pid == -1)
rb_last_status_set(0x7f << 8, 0);
-# endif
# else
if (!eargp->use_shell) {
char **argv = ARGVSTR2ARGV(eargp->invoke.cmd.argv_str);