* path.cc (cwdstuff::set): Only fix up UNC path in win32 so as not

to overwrite incoming path.
This commit is contained in:
Corinna Vinschen 2009-07-15 13:27:34 +00:00
parent 5aa96db905
commit b31ca33dcc
2 changed files with 10 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2009-07-15 Corinna Vinschen <corinna@vinschen.de>
* path.cc (cwdstuff::set): Only fix up UNC path in win32 so as not
to overwrite incoming path.
2009-07-14 Corinna Vinschen <corinna@vinschen.de>
Throughout avoid having to initialize constant UNICODE_STRINGs.

View File

@ -3195,6 +3195,8 @@ cwdstuff::set (PUNICODE_STRING nat_cwd, const char *posix_cwd, bool doit)
}
else
{
bool unc = false;
if (upath.Buffer[0] == L'/') /* Virtual path, don't mangle. */
;
else if (!doit)
@ -3202,7 +3204,7 @@ cwdstuff::set (PUNICODE_STRING nat_cwd, const char *posix_cwd, bool doit)
/* Convert to a Win32 path. */
upath.Buffer += upath.Length / sizeof (WCHAR) - len;
if (upath.Buffer[1] == L'\\') /* UNC path */
upath.Buffer[0] = L'\\';
unc = true;
upath.Length = len * sizeof (WCHAR);
}
else
@ -3218,6 +3220,8 @@ cwdstuff::set (PUNICODE_STRING nat_cwd, const char *posix_cwd, bool doit)
upath.Length + 2),
upath.Length + 2);
RtlCopyUnicodeString (&win32, &upath);
if (unc)
win32.Buffer[0] = L'\\';
}
/* Make sure it's NUL-terminated. */
win32.Buffer[win32.Length / sizeof (WCHAR)] = L'\0';