mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
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
This commit is contained in:
parent
30afde959b
commit
ce3029cd19
1 changed files with 0 additions and 4 deletions
|
@ -1395,7 +1395,6 @@ proc_spawn_cmd_internal(char **argv, char *prog)
|
||||||
after_exec();
|
after_exec();
|
||||||
if (status == -1) errno = ENOEXEC;
|
if (status == -1) errno = ENOEXEC;
|
||||||
}
|
}
|
||||||
rb_last_status_set(status == -1 ? 127 : status, 0);
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1431,7 +1430,6 @@ proc_spawn_sh(char *str)
|
||||||
char *shell = dln_find_exe_r("sh", 0, fbuf, sizeof(fbuf));
|
char *shell = dln_find_exe_r("sh", 0, fbuf, sizeof(fbuf));
|
||||||
before_exec();
|
before_exec();
|
||||||
status = spawnl(P_NOWAIT, (shell ? shell : "/bin/sh"), "sh", "-c", str, (char*)NULL);
|
status = spawnl(P_NOWAIT, (shell ? shell : "/bin/sh"), "sh", "-c", str, (char*)NULL);
|
||||||
rb_last_status_set(status == -1 ? 127 : status, 0);
|
|
||||||
after_exec();
|
after_exec();
|
||||||
return status;
|
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);
|
char **argv = ARGVSTR2ARGV(eargp->invoke.cmd.argv_str);
|
||||||
pid = proc_spawn_cmd(argv, prog, eargp);
|
pid = proc_spawn_cmd(argv, prog, eargp);
|
||||||
}
|
}
|
||||||
# if defined(_WIN32)
|
|
||||||
if (pid == -1)
|
if (pid == -1)
|
||||||
rb_last_status_set(0x7f << 8, 0);
|
rb_last_status_set(0x7f << 8, 0);
|
||||||
# endif
|
|
||||||
# else
|
# else
|
||||||
if (!eargp->use_shell) {
|
if (!eargp->use_shell) {
|
||||||
char **argv = ARGVSTR2ARGV(eargp->invoke.cmd.argv_str);
|
char **argv = ARGVSTR2ARGV(eargp->invoke.cmd.argv_str);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue