From 9b0e903e31c371650c30e5458696182912ce27b9 Mon Sep 17 00:00:00 2001 From: Lynix Date: Mon, 30 Nov 2015 12:50:55 +0100 Subject: [PATCH] Core/Win32: Fix file opening in ReadWrite mode Former-commit-id: 58feae9f282529b8067fae52e81d29bdada154f9 --- src/Nazara/Core/Win32/FileImpl.cpp | 36 +++++++++++------------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/src/Nazara/Core/Win32/FileImpl.cpp b/src/Nazara/Core/Win32/FileImpl.cpp index 113915c66..8c479c798 100644 --- a/src/Nazara/Core/Win32/FileImpl.cpp +++ b/src/Nazara/Core/Win32/FileImpl.cpp @@ -56,40 +56,30 @@ namespace Nz bool FileImpl::Open(const String& filePath, UInt32 mode) { - DWORD access; + DWORD access = 0; DWORD shareMode = FILE_SHARE_READ; - DWORD openMode; + DWORD openMode = 0; + if (mode & OpenMode_ReadOnly) { - access = GENERIC_READ; - openMode = OPEN_EXISTING; + access |= GENERIC_READ; + + if ((mode & OpenMode_WriteOnly) == 0) + openMode |= OPEN_EXISTING; } - else if (mode & OpenMode_ReadWrite) + + if (mode & OpenMode_WriteOnly) { if (mode & OpenMode_Append) - access = FILE_APPEND_DATA; + access |= FILE_APPEND_DATA; else - access = GENERIC_READ | GENERIC_WRITE; + access |= GENERIC_WRITE; if (mode & OpenMode_Truncate) - openMode = CREATE_ALWAYS; + openMode |= CREATE_ALWAYS; else - openMode = OPEN_ALWAYS; + openMode |= OPEN_ALWAYS; } - else if (mode & OpenMode_WriteOnly) - { - if (mode & OpenMode_Append) - access = FILE_APPEND_DATA; - else - access = GENERIC_WRITE; - - if (mode & OpenMode_Truncate) - openMode = CREATE_ALWAYS; - else - openMode = OPEN_ALWAYS; - } - else - return false; if ((mode & OpenMode_Lock) == 0) shareMode |= FILE_SHARE_WRITE;