aboutsummaryrefslogtreecommitdiffstats
path: root/process.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-10-14 15:54:03 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-10-14 15:54:03 +0000
commit20b7b3da789d59a4b98a5c791e77a84d6f10111f (patch)
tree2614c9b48018c35c9d631c381cd24a1f148fb475 /process.c
parentc908ed59dab3b1e71dc4928c59816f594d857418 (diff)
downloadruby-20b7b3da789d59a4b98a5c791e77a84d6f10111f.tar.gz
process.c: use uaspawn
* process.c (proc_exec_cmd): use UTF-8 version aspawn. [ruby-dev:49838] [Bug #12841] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'process.c')
-rw-r--r--process.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/process.c b/process.c
index aaaf846684..1171060201 100644
--- a/process.c
+++ b/process.c
@@ -1247,7 +1247,9 @@ proc_exec_cmd(const char *prog, VALUE argv_str, VALUE envp_str)
UNREACHABLE;
#else
char **argv;
+#ifndef _WIN32
char **envp;
+#endif
argv = ARGVSTR2ARGV(argv_str);
@@ -1256,12 +1258,16 @@ proc_exec_cmd(const char *prog, VALUE argv_str, VALUE envp_str)
return -1;
}
+#ifdef _WIN32
+ rb_w32_uaspawn(P_OVERLAY, prog, argv);
+#else
envp = envp_str ? (char **)RSTRING_PTR(envp_str) : NULL;
if (envp_str)
execve(prog, argv, envp); /* async-signal-safe */
else
execv(prog, argv); /* async-signal-safe (since SUSv4) */
preserving_errno(try_with_sh(prog, argv, envp)); /* try_with_sh() is async-signal-safe. */
+#endif
return -1;
#endif
}