Commit 45bfa4ee authored by Alexandre Julliard's avatar Alexandre Julliard

ntdll: Check for existing Unix path name in RtlGetFullPathName_U().

parent 0d173e57
......@@ -543,16 +543,18 @@ static ULONG get_full_path_helper(LPCWSTR name, LPWSTR buffer, ULONG size)
WCHAR *nt_str;
SIZE_T buflen;
NTSTATUS status;
unix_name = RtlAllocateHeap( GetProcessHeap(), 0, 3 * wcslen(name) + 1 );
ntdll_wcstoumbs( name, wcslen(name) + 1, unix_name, 3 * wcslen(name) + 1, FALSE );
buflen = strlen(unix_name) + 10;
for (;;)
UNICODE_STRING str;
nt_str = RtlAllocateHeap( GetProcessHeap(), 0, (wcslen(name) + 9) * sizeof(WCHAR) );
wcscpy( nt_str, L"\\??\\unix" );
wcscat( nt_str, name );
RtlInitUnicodeString( &str, nt_str );
buflen = 3 * wcslen(name) + 1;
unix_name = RtlAllocateHeap( GetProcessHeap(), 0, buflen );
if (!(status = wine_nt_to_unix_file_name( &str, unix_name, &buflen, FILE_OPEN )))
{
if (!(nt_str = RtlAllocateHeap( GetProcessHeap(), 0, buflen * sizeof(WCHAR) ))) break;
buflen = wcslen(name) + 9;
status = wine_unix_to_nt_file_name( unix_name, nt_str, &buflen );
if (status != STATUS_BUFFER_TOO_SMALL) break;
RtlFreeHeap( GetProcessHeap(), 0, nt_str );
}
RtlFreeHeap( GetProcessHeap(), 0, unix_name );
if (!status && buflen > 6 && nt_str[5] == ':')
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment