diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2008-03-11 15:34:08 +0300 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2008-03-11 15:34:08 +0300 |
commit | 6c968f611bfa7045711f9844de2a5129257fbc1a (patch) | |
tree | eaa7145edbd8a70303895b6a275898e9ad25d75d /winsup/cygwin/path.cc | |
parent | becf251f67689f14e1f9f3ba04b4b2ad586fc77e (diff) |
* path.cc (cwdstuff::set): Make sure drive_length is 0 for virtual
paths. Add comments.
* spawn.cc (spawn_guts): Don't allow to start a native Win32 application
from a long path or a virtual path. Print an error message to stderr.
Diffstat (limited to 'winsup/cygwin/path.cc')
-rw-r--r-- | winsup/cygwin/path.cc | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 253f97e0f..1ddf9cda0 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -4630,9 +4630,11 @@ cwdstuff::set (PUNICODE_STRING nat_cwd, const char *posix_cwd, bool doit) } /* Make sure it's NUL-termniated. */ win32.Buffer[win32.Length / sizeof (WCHAR)] = L'\0'; - if (win32.Buffer[1] == L':') + if (!doit) /* Virtual path */ + drive_length = 0; + else if (win32.Buffer[1] == L':') /* X: */ drive_length = 2; - else if (win32.Buffer[1] == L'\\') + else if (win32.Buffer[1] == L'\\') /* UNC path */ { PWCHAR ptr = wcschr (win32.Buffer + 2, L'\\'); if (ptr) @@ -4642,7 +4644,7 @@ cwdstuff::set (PUNICODE_STRING nat_cwd, const char *posix_cwd, bool doit) else drive_length = win32.Length / sizeof (WCHAR); } - else + else /* Shouldn't happen */ drive_length = 0; tmp_pathbuf tp; |