diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2010-01-25 11:21:56 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2010-01-25 11:21:56 +0000 |
commit | 27ac64346fa0231a6a9a6e986ca460923f6b4b65 (patch) | |
tree | 15e0a253468ce9a89347cb0a28814c244fa27adf /winsup/cygwin/spawn.cc | |
parent | aced35f8834dd26101b41fbab6713b04459f5775 (diff) | |
download | cygnal-27ac64346fa0231a6a9a6e986ca460923f6b4b65.tar.gz cygnal-27ac64346fa0231a6a9a6e986ca460923f6b4b65.tar.bz2 cygnal-27ac64346fa0231a6a9a6e986ca460923f6b4b65.zip |
* spawn.cc (spawn_guts): Only try to remove long path prefix from
runpath if runpath is not NULL.
Diffstat (limited to 'winsup/cygwin/spawn.cc')
-rw-r--r-- | winsup/cygwin/spawn.cc | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index fdbab76aa..c1033376c 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -489,23 +489,24 @@ 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) = L'\\'; - if (!RtlIsDosDeviceName_U (r)) - runpath = r; - else if (*r == L'\\') - *r = L'C'; - } - } + if (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) = L'\\'; + if (!RtlIsDosDeviceName_U (r)) + runpath = r; + else if (*r == L'\\') + *r = L'C'; + } + } syscall_printf ("null_app_name %d (%W, %.9500W)", null_app_name, runpath, wone_line); |