The wcscat increases the size, so this happened:
``` trace:file:wine_get_dos_file_name start: "/usr/lib32/libXext.so.6" trace:file:NtCreateFile handle=0x109f37c access=80000000 name=L"\??\unix\usr\lib32\libXext.so.6" objattr=00000000 root=(nil) sec=(nil) io=0x109f380 alloc_size=(nil) attr=00000000 sharing=00000003 disp=1 options=00000020 ea=(nil).0x00000000 trace:file:get_nt_and_unix_names L"\??\unix\usr\lib32\libXext.so.6" -> ret 0 nt L"\??\Z:\usr\lib32\libXext.so.6" unix "/usr/lib32/libXext.so.6" trace:file:wine_get_dos_file_name end: L"Z:\usr\lib32\libXextXext.so.6" ```
From: William Horvath william@horvath.blog
The wcscat increases the size, so this happened:
trace:file:wine_get_dos_file_name start: "/usr/lib32/libXext.so.6" trace:file:NtCreateFile handle=0x109f37c access=80000000 name=L"\??\unix\usr\lib32\libXext.so.6" objattr=00000000 root=(nil) sec=(nil) io=0x109f380 alloc_size=(nil) attr=00000000 sharing=00000003 disp=1 options=00000020 ea=(nil).0x00000000 trace:file:get_nt_and_unix_names L"\??\unix\usr\lib32\libXext.so.6" -> ret 0 nt L"\??\Z:\usr\lib32\libXext.so.6" unix "/usr/lib32/libXext.so.6" trace:file:wine_get_dos_file_name end: L"Z:\usr\lib32\libXextXext.so.6" --- dlls/kernel32/path.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/dlls/kernel32/path.c b/dlls/kernel32/path.c index b6fa4497538..9f90ce93b96 100644 --- a/dlls/kernel32/path.c +++ b/dlls/kernel32/path.c @@ -465,6 +465,7 @@ WCHAR * CDECL wine_get_dos_file_name( LPCSTR str ) res = GetFinalPathNameByHandleW( handle, buffer, len + 8, VOLUME_NAME_DOS ); if (!res || res > len + 8) goto failed; wcscat( buffer, nt_name.Buffer + nt_name.Length / sizeof(WCHAR) ); + len = res + 8 + len - (nt_name.Length / sizeof(WCHAR)); NtClose( handle ); RtlFreeHeap( GetProcessHeap(), 0, nt_str ); }
This merge request was closed by William Horvath.
Whoops, I missed !8455. Closing.