* path.h (enum path_types): Drop definition of PATH_64BITEXEC.

(path_conv::iscygexec32): Drop unused inline function.
	(path_conv::iscygexec64): Ditto.
	(path_conv::set_cygexec): Remove unnecessary setting of PATH_64BITEXEC.
	* spawn.cc (child_info_spawn::worker): Disable setting of
	STARTUPINFOW::lpReserved2 and STARTUPINFOW::cbReserved2 for non-Cygwin
	child processes.  Explain why.
This commit is contained in:
Corinna Vinschen
2013-08-23 09:29:25 +00:00
parent 20b311fd8e
commit 10822894db
3 changed files with 23 additions and 15 deletions

View File

@@ -554,8 +554,17 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv,
__stdout = in__stdout;
record_children ();
si.lpReserved2 = (LPBYTE) this;
si.cbReserved2 = sizeof (*this);
/* Don't propagate the child_info_spawn structure to the process if it
hasn't been recognized as a Cygwin executable. This also covers Cygwin
executables of a different target (32 vs. 64 bit). Native processes
usually still work, even if lpReserved2 contains garbage from their
point of view, but Cygwin processes of different bitsize will recognize
it as Cygwin info and get all excited about the differences. */
if (real_path.iscygexec ())
{
si.lpReserved2 = (LPBYTE) this;
si.cbReserved2 = sizeof (*this);
}
/* Depends on set call above.
Some file types might need extra effort in the parent after CreateProcess