mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 12:12:47 +01:00
[Support] Fix FileNameLength passed to SetFileInformationByHandle
The rename_internal function used for Windows has a minor bug where the filename length is passed as a character count instead of a byte count. Windows internally ignores this field, but other tools that hook NT api's may use the documented behavior: MSDN documentation specifying the size should be in bytes: https://docs.microsoft.com/en-us/windows/desktop/api/winbase/ns-winbase-_file_rename_info Patch by Ben Hillis. Differential Revision: https://reviews.llvm.org/D55624 llvm-svn: 348995
This commit is contained in:
parent
2d56ac1f2c
commit
1d6b0fb58c
@ -416,7 +416,7 @@ static std::error_code rename_internal(HANDLE FromHandle, const Twine &To,
|
||||
*reinterpret_cast<FILE_RENAME_INFO *>(RenameInfoBuf.data());
|
||||
RenameInfo.ReplaceIfExists = ReplaceIfExists;
|
||||
RenameInfo.RootDirectory = 0;
|
||||
RenameInfo.FileNameLength = ToWide.size();
|
||||
RenameInfo.FileNameLength = ToWide.size() * sizeof(wchar_t);
|
||||
std::copy(ToWide.begin(), ToWide.end(), &RenameInfo.FileName[0]);
|
||||
|
||||
SetLastError(ERROR_SUCCESS);
|
||||
|
Loading…
Reference in New Issue
Block a user