* spawn.cc (spawn_guts): Remove long path prefix from win32 path
before calling CreateProcess if path length is < MAX_PATH.
This commit is contained in:
parent
a1e1990348
commit
19dc8ba9b2
@ -1,3 +1,8 @@
|
||||
2008-07-22 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* spawn.cc (spawn_guts): Remove long path prefix from win32 path
|
||||
before calling CreateProcess if path length is < MAX_PATH.
|
||||
|
||||
2008-07-22 Corinna Vinschen <corinna@vinschen.de>
|
||||
|
||||
* include/ctype.h: Declare __ctype_ptr__ to keep newlib build happy.
|
||||
|
@ -472,6 +472,20 @@ spawn_guts (const char *prog_arg, const char *const *argv,
|
||||
}
|
||||
|
||||
runpath = null_app_name ? NULL : real_path.get_wide_win32_path (runpath);
|
||||
{ /* If the executable path length is < MAX_PATH, make sure the long path
|
||||
win32 prefix is removed from the path to make subsequent native Win32
|
||||
child processes happy which are not long path aware. */
|
||||
USHORT len = real_path.get_nt_native_path ()->Length;
|
||||
if (len < (MAX_PATH + 4) * sizeof (WCHAR)
|
||||
|| (runpath[5] != L':' /* UNC path */
|
||||
&& len < (MAX_PATH + 6) * sizeof (WCHAR)))
|
||||
{
|
||||
PWCHAR r = runpath + 4;
|
||||
if (r[1] != L':') /* UNC path */
|
||||
r += 2;
|
||||
runpath = r;
|
||||
}
|
||||
}
|
||||
|
||||
syscall_printf ("null_app_name %d (%W, %.9500W)", null_app_name,
|
||||
runpath, wone_line);
|
||||
|
Loading…
Reference in New Issue
Block a user