* path.cc (cwdstuff::set): Only fix up UNC path in win32 so as not
to overwrite incoming path.
This commit is contained in:
parent
5aa96db905
commit
b31ca33dcc
|
@ -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.
|
||||
|
|
|
@ -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';
|
||||
|
|
Loading…
Reference in New Issue