diff --git a/Versions/build.txt b/Versions/build.txt
index d00491fd7..0cfbf0888 100644
--- a/Versions/build.txt
+++ b/Versions/build.txt
@@ -1 +1 @@
-1
+2
diff --git a/minipath/src/Config.cpp b/minipath/src/Config.cpp
index 9008841e2..1de6a8c89 100644
--- a/minipath/src/Config.cpp
+++ b/minipath/src/Config.cpp
@@ -124,13 +124,15 @@ static HANDLE s_INI_Hndl = INVALID_HANDLE_VALUE;
static CSimpleIni s_INI(s_bIsUTF8, s_bUseMultiKey, s_bUseMultiLine);
-extern "C" BOOL LoadIniFile(LPCWSTR lpIniFilePath)
+extern "C" BOOL LoadIniFile(LPCWSTR lpIniFilePath, BOOL bNeedReadWriteAccess)
{
s_INI.Reset();
s_INI.SetSpaces(s_bSetSpaces);
s_INI.SetMultiLine(s_bUseMultiLine);
- s_INI_Hndl = AcquireReadFileLock(lpIniFilePath, s_OvrLpd);
+ s_INI_Hndl = bNeedReadWriteAccess ? AcquireWriteFileLock(lpIniFilePath, s_OvrLpd) :
+ AcquireReadFileLock(lpIniFilePath, s_OvrLpd);;
+
if (s_INI_Hndl == INVALID_HANDLE_VALUE) {
return false;
}
@@ -834,7 +836,7 @@ void LoadFlags()
{
__try {
- LoadIniFile(g_wchIniFile);
+ LoadIniFile(g_wchIniFile, FALSE);
const WCHAR* const Settings_Section2 = L"Settings2";
@@ -890,7 +892,7 @@ void LoadSettings()
{
__try {
- LoadIniFile(g_wchIniFile);
+ LoadIniFile(g_wchIniFile, FALSE);
const WCHAR* const Settings_Section = L"Settings";
@@ -1071,7 +1073,7 @@ void SaveSettings(BOOL bSaveSettingsNow)
__try {
- LoadIniFile(g_wchIniFile);
+ LoadIniFile(g_wchIniFile, TRUE);
const WCHAR* const Settings_Section = L"Settings";
diff --git a/minipath/src/Config.h b/minipath/src/Config.h
index a4c4a9aff..988496b43 100644
--- a/minipath/src/Config.h
+++ b/minipath/src/Config.h
@@ -37,7 +37,7 @@ extern "C" {
// ----------------------------------------------------------------------------
- BOOL LoadIniFile(LPCWSTR lpIniFilePath);
+ BOOL LoadIniFile(LPCWSTR lpIniFilePath, BOOL bNeedReadWriteAccess);
BOOL SaveIniFile();
void ReleaseIniFile();
diff --git a/minipath/src/Dialogs.c b/minipath/src/Dialogs.c
index c3d1477de..2a9cbd061 100644
--- a/minipath/src/Dialogs.c
+++ b/minipath/src/Dialogs.c
@@ -2700,7 +2700,7 @@ INT_PTR CALLBACK FindTargetDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lPar
__try {
- LoadIniFile(g_wchIniFile);
+ LoadIniFile(g_wchIniFile, TRUE);
const WCHAR* const TargetApp_Section = L"Target Application";
diff --git a/minipath/src/Helpers.c b/minipath/src/Helpers.c
index 5d12bc37d..f1b50d470 100644
--- a/minipath/src/Helpers.c
+++ b/minipath/src/Helpers.c
@@ -1530,7 +1530,7 @@ BOOL MRU_Load(LPMRULIST pmru) {
MRU_Empty(pmru);
__try {
- LoadIniFile(g_wchIniFile);
+ LoadIniFile(g_wchIniFile, FALSE);
const WCHAR* const RegKey_Section = pmru->szRegKey;
@@ -1555,7 +1555,7 @@ BOOL MRU_Load(LPMRULIST pmru) {
BOOL MRU_Save(LPMRULIST pmru) {
__try {
- LoadIniFile(g_wchIniFile);
+ LoadIniFile(g_wchIniFile, TRUE);
WCHAR tchName[32];
WCHAR tchItem[1024] = { L'\0' };
@@ -1572,7 +1572,7 @@ BOOL MRU_Save(LPMRULIST pmru) {
}
}
__finally {
- SaveIniFile(g_wchIniFile);
+ SaveIniFile();
}
return TRUE;
}
diff --git a/minipath/src/minipath.c b/minipath/src/minipath.c
index 2f74b53d4..4c5af5419 100644
--- a/minipath/src/minipath.c
+++ b/minipath/src/minipath.c
@@ -1163,7 +1163,7 @@ void CreateBars(HWND hwnd,HINSTANCE hInstance)
// Load toolbar labels
__try {
- LoadIniFile(g_wchIniFile);
+ LoadIniFile(g_wchIniFile, FALSE);
const WCHAR* const ToolbarLabels_Section = L"Toolbar Labels";
n = 0;
@@ -3330,7 +3330,7 @@ void LoadTargetParamsOnce(void)
return;
__try {
- LoadIniFile(g_wchIniFile);
+ LoadIniFile(g_wchIniFile, FALSE);
const WCHAR* const TargetApp_Section = L"Target Application";
if (IniSectionGetInt(TargetApp_Section, L"UseTargetApplication", 0xFB) != 0xFB) {
diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf
index 8dd115450..2d98feed8 100644
--- a/res/Notepad3.exe.manifest.conf
+++ b/res/Notepad3.exe.manifest.conf
@@ -3,7 +3,7 @@
Notepad3 RC3
diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp
index 3672a2c68..f006280c4 100644
--- a/src/Config/Config.cpp
+++ b/src/Config/Config.cpp
@@ -138,13 +138,15 @@ static HANDLE s_INI_Hndl = INVALID_HANDLE_VALUE;
static CSimpleIni s_INI(s_bIsUTF8, s_bUseMultiKey, s_bUseMultiLine);
-extern "C" bool LoadIniFile(LPCWSTR lpIniFilePath)
+extern "C" bool LoadIniFile(LPCWSTR lpIniFilePath, bool bNeedReadWriteAccess)
{
s_INI.Reset();
s_INI.SetSpaces(s_bSetSpaces);
s_INI.SetMultiLine(s_bUseMultiLine);
- s_INI_Hndl = AcquireReadFileLock(lpIniFilePath, s_OvrLpd);
+ s_INI_Hndl = bNeedReadWriteAccess ? AcquireWriteFileLock(lpIniFilePath, s_OvrLpd) :
+ AcquireReadFileLock(lpIniFilePath, s_OvrLpd);;
+
if (s_INI_Hndl == INVALID_HANDLE_VALUE) {
return false;
}
@@ -842,7 +844,7 @@ bool OpenSettingsFile()
if (StrIsNotEmpty(Globals.IniFile)) {
CreateIniFile();
if (!IsIniFileLoaded()) {
- LoadIniFile(Globals.IniFile);
+ LoadIniFile(Globals.IniFile, true);
}
}
return IsIniFileLoaded();
diff --git a/src/Config/Config.h b/src/Config/Config.h
index ba9c198a9..3f2c749fc 100644
--- a/src/Config/Config.h
+++ b/src/Config/Config.h
@@ -37,7 +37,7 @@ bool CloseSettingsFile(bool bSaveChanges);
// ----------------------------------------------------------------------------
-bool LoadIniFile(LPCWSTR lpIniFilePath);
+bool LoadIniFile(LPCWSTR lpIniFilePath, bool bNeedReadWriteAccess);
bool IsIniFileLoaded();
void ReleaseIniFile();
bool SaveIniFile();
diff --git a/src/Styles.c b/src/Styles.c
index 3b71fad23..be9253c6a 100644
--- a/src/Styles.c
+++ b/src/Styles.c
@@ -544,7 +544,7 @@ bool Style_ImportFromFile(const WCHAR* szFile)
if (bResetToDefault) {
ReleaseIniFile();
}
- bool result = !bResetToDefault ? LoadIniFile(szFile) : true;
+ bool result = !bResetToDefault ? LoadIniFile(szFile, false) : true;
if (result) {
@@ -825,7 +825,7 @@ bool Style_ExportToFile(const WCHAR* szFile, bool bForceAll)
}
}
else {
- LoadIniFile(szFilePathNorm); // reset
+ LoadIniFile(szFilePathNorm, true); // reset
Style_ToIniSection(bForceAll);
ok = SaveIniFile();
}
diff --git a/src/VersionEx.h b/src/VersionEx.h
index 10399468a..4141a7398 100644
--- a/src/VersionEx.h
+++ b/src/VersionEx.h
@@ -9,7 +9,7 @@
#define VERSION_MAJOR 5
#define VERSION_MINOR 20
#define VERSION_REV 313
-#define VERSION_BUILD 1
+#define VERSION_BUILD 2
#define SCINTILLA_VER 432
#define ONIGURUMA_REGEX_VER 6.9.4
#define UCHARDET_VER 2018.09.27