diff --git a/dll/win32/kernel32/client/file/copy.c b/dll/win32/kernel32/client/file/copy.c index 9df97ba1596..6e3f1ae8a8c 100644 --- a/dll/win32/kernel32/client/file/copy.c +++ b/dll/win32/kernel32/client/file/copy.c @@ -254,11 +254,13 @@ BasepCopyFileExW(IN LPCWSTR lpExistingFileName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, - dwCopyFlags ? CREATE_NEW : CREATE_ALWAYS, + (dwCopyFlags & COPY_FILE_FAIL_IF_EXISTS) ? CREATE_NEW : CREATE_ALWAYS, FileBasic.FileAttributes, NULL); if (INVALID_HANDLE_VALUE != FileHandleDest) { + if (!(dwCopyFlags & COPY_FILE_FAIL_IF_EXISTS) && GetLastError() == ERROR_ALREADY_EXISTS) + SetLastError(ERROR_SUCCESS); errCode = CopyLoop(FileHandleSource, FileHandleDest, FileStandard.EndOfFile,