Index: lib/rtl/path.c =================================================================== --- lib/rtl/path.c (révision 59193) +++ lib/rtl/path.c (copie de travail) @@ -311,7 +311,7 @@ /* Break filename into component parts */ FileNameBuffer = FileName->Buffer; FileNameLength = FileName->Length; - FileNameChars = FileNameLength / sizeof(WCHAR); + FileNameChars = FileNameLength / sizeof(WCHAR); /* Kill trailing spaces */ c = FileNameBuffer[FileNameChars - 1]; @@ -1365,7 +1365,7 @@ * (this seems also to be the only spot in RtlGetFullPathName that the * existence of a part of a path is checked) */ - /* fall thru */ + /* fall through */ case STATUS_BUFFER_TOO_SMALL: reqsize = val.Length + sizeof(WCHAR); /* append trailing '\\' */ val.Buffer[val.Length / sizeof(WCHAR)] = '\\'; @@ -1462,7 +1462,7 @@ memmove(buffer + reqsize / sizeof(WCHAR), name + dep, deplen + sizeof(WCHAR)); if (reqsize) memcpy(buffer, ins_str, reqsize); - reqsize += deplen; + ////// ADDED HERE, NOT IN WINE!!! reqsize += deplen; ////// if (ins_str && ins_str != tmp && ins_str != cd->Buffer) RtlFreeHeap(RtlGetProcessHeap(), 0, ins_str); @@ -1488,11 +1488,13 @@ * * @implemented */ -ULONG NTAPI RtlGetFullPathName_U( - const WCHAR* name, - ULONG size, - WCHAR* buffer, - WCHAR** file_part) +ULONG +NTAPI +RtlGetFullPathName_U( + _In_ PCWSTR name, + _In_ ULONG size, + _Out_z_bytecap_(size) PWSTR buffer, + _Out_opt_ PWSTR *file_part) { WCHAR* ptr; ULONG dosdev; @@ -1508,7 +1510,7 @@ if (file_part) *file_part = NULL; /* check for DOS device name */ - dosdev = RtlIsDosDeviceName_U((WCHAR*)name); + dosdev = RtlIsDosDeviceName_U(name); if (dosdev) { DWORD offset = HIWORD(dosdev) / sizeof(WCHAR); /* get it in WCHARs, not bytes */