summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/spawn.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/spawn.cc')
-rw-r--r--winsup/cygwin/spawn.cc7
1 files changed, 4 insertions, 3 deletions
diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc
index 9d358da0c..a39145ed8 100644
--- a/winsup/cygwin/spawn.cc
+++ b/winsup/cygwin/spawn.cc
@@ -347,6 +347,7 @@ spawn_guts (const char * prog_arg, const char *const *argv,
goto out;
}
+ bool wascygexec = real_path.iscygexec ();
res = newargv.fixup (prog_arg, real_path, ext);
if (res)
@@ -371,9 +372,9 @@ spawn_guts (const char * prog_arg, const char *const *argv,
}
else
{
- if (real_path.iscygexec ())
+ if (wascygexec)
newargv.dup_all ();
- else if (!one_line.fromargv (newargv, real_path))
+ else if (!one_line.fromargv (newargv, real_path, real_path.iscygexec ()))
{
res = -1;
goto out;
@@ -461,6 +462,7 @@ spawn_guts (const char * prog_arg, const char *const *argv,
cygheap->fdtab.set_file_pointers_for_exec ();
+ ch.set (chtype, real_path.iscygexec ());
moreinfo->envp = build_env (envp, envblock, moreinfo->envc, real_path.iscygexec ());
if (!moreinfo->envp || !envblock)
{
@@ -468,7 +470,6 @@ spawn_guts (const char * prog_arg, const char *const *argv,
res = -1;
goto out;
}
- ch.set (chtype, real_path.iscygexec ());
ch.moreinfo = moreinfo;
si.lpReserved2 = (LPBYTE) &ch;