From fd6de736f94136ed7b7a0c3d32c488cafef3be6b Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Thu, 23 Jan 2020 23:57:35 +0000 Subject: [PATCH] Read/WriteFile: Use memcpy instead of copy copy compiles to memmove but we know the ranges do not overlap here, because memfile buffer is not exposed outside this file --- SourceX/miniwin/misc_io.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/SourceX/miniwin/misc_io.cpp b/SourceX/miniwin/misc_io.cpp index 8eb3c375b..e04e40dbc 100644 --- a/SourceX/miniwin/misc_io.cpp +++ b/SourceX/miniwin/misc_io.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -54,7 +55,7 @@ WINBOOL ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDW memfile *file = static_cast(hFile); UNIMPLEMENTED_UNLESS(!lpOverlapped); size_t len = std::min(file->buf.size() - file->pos, nNumberOfBytesToRead); - std::copy(file->buf.begin() + file->pos, file->buf.begin() + file->pos + len, static_cast(lpBuffer)); + std::memcpy(lpBuffer, file->buf.data() + file->pos, len); file->pos += len; *lpNumberOfBytesRead = len; return true; @@ -75,9 +76,7 @@ WINBOOL WriteFile(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, return true; if (file->buf.size() < file->pos + nNumberOfBytesToWrite) file->buf.resize(file->pos + nNumberOfBytesToWrite); - std::copy(static_cast(lpBuffer), - static_cast(lpBuffer) + nNumberOfBytesToWrite, - file->buf.begin() + file->pos); + std::memcpy(file->buf.data() + file->pos, lpBuffer, nNumberOfBytesToWrite); file->pos += nNumberOfBytesToWrite; *lpNumberOfBytesWritten = nNumberOfBytesToWrite; return true;