diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp index 14e28c68c..5dabc5a42 100644 --- a/src/Config/Config.cpp +++ b/src/Config/Config.cpp @@ -91,13 +91,22 @@ constexpr bool SI_Success(const SI_Error rc) noexcept { HANDLE AcquireWriteFileLock(LPCWSTR lpIniFilePath, OVERLAPPED& rOvrLpd) { - HANDLE hFile = CreateFile(lpIniFilePath, - GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, + bool bLocked = false; + + HANDLE hFile = CreateFile(lpIniFilePath, + GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); - DWORD const flags = LOCKFILE_EXCLUSIVE_LOCK; - bool const bLocked = LockFileEx(hFile, flags, 0, MAXDWORD, 0, &rOvrLpd); - + if (hFile != INVALID_HANDLE_VALUE) { + DWORD const flags = LOCKFILE_EXCLUSIVE_LOCK; + bLocked = LockFileEx(hFile, flags, 0, MAXDWORD, 0, &rOvrLpd); + if (!bLocked) { + MsgBoxLastError(L"AcquireWriteFileLock(): NO LOCK ACQUIRED!", 0); // @@@§§§ + } + } + else { + MsgBoxLastError(L"AcquireWriteFileLock(): INVALID_HANDLE_VALUE!", 0); // @@@§§§ + } return (bLocked ? hFile : INVALID_HANDLE_VALUE); } @@ -105,13 +114,22 @@ HANDLE AcquireWriteFileLock(LPCWSTR lpIniFilePath, OVERLAPPED& rOvrLpd) HANDLE AcquireReadFileLock(LPCWSTR lpIniFilePath, OVERLAPPED& rOvrLpd) { + bool bLocked = false; + HANDLE hFile = CreateFile(lpIniFilePath, GENERIC_READ, FILE_SHARE_READ, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); - DWORD const flags = LOCKFILE_EXCLUSIVE_LOCK; - bool const bLocked = LockFileEx(hFile, flags, 0, MAXDWORD, 0, &rOvrLpd); - + if (hFile != INVALID_HANDLE_VALUE) { + DWORD const flags = LOCKFILE_EXCLUSIVE_LOCK; + bLocked = LockFileEx(hFile, flags, 0, MAXDWORD, 0, &rOvrLpd); + if (!bLocked) { + MsgBoxLastError(L"AcquireReadFileLock(): NO LOCK ACQUIRED!", 0); // @@@§§§ + } + } + else { + MsgBoxLastError(L"AcquireReadFileLock(): INVALID_HANDLE_VALUE", 0); // @@@§§§ + } return (bLocked ? hFile : INVALID_HANDLE_VALUE); } @@ -816,6 +834,7 @@ extern "C" bool CreateIniFile() CloseHandle(hFile); } else { + MsgBoxLastError(L"CreateIniFile(): INVALID_HANDLE_VALUE!", 0); // @@@§§§ dwFileSize = INVALID_FILE_SIZE; } } diff --git a/src/Config/SimpleIni.h b/src/Config/SimpleIni.h index 4ec554497..57c16b68b 100644 --- a/src/Config/SimpleIni.h +++ b/src/Config/SimpleIni.h @@ -1434,6 +1434,7 @@ CSimpleIniTempl::LoadFile( nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); if (hFile == INVALID_HANDLE_VALUE) { + MsgBoxLastError(L"CSimpleIni::LoadFile(): INVALID_HANDLE_VALUE!", 0); // @@@§§§ return SI_Error::SI_FILE; } @@ -2629,10 +2630,11 @@ CSimpleIniTempl::SaveFile( ) const { HANDLE hFile = CreateFile(a_pwszFile, - FILE_GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, + GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr); if (hFile == INVALID_HANDLE_VALUE) { + MsgBoxLastError(L"CSimpleIni::SaveFile(): INVALID_HANDLE_VALUE!", 0); // @@@§§§ return SI_Error::SI_FILE; } diff --git a/src/Notepad3.c b/src/Notepad3.c index b1c6da249..400aa4213 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -9404,7 +9404,8 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, } if (bCreateFile) { HANDLE hFile = CreateFile(szFileName, - GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE, + GENERIC_READ | GENERIC_WRITE, + FILE_SHARE_READ|FILE_SHARE_WRITE, NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL); Globals.dwLastError = GetLastError(); fSuccess = (hFile != INVALID_HANDLE_VALUE);