From b867599fdd3c589aaed6fe0473009310da5eb3d0 Mon Sep 17 00:00:00 2001 From: ergo720 Date: Fri, 28 Jul 2017 12:50:42 +0000 Subject: [PATCH 1/2] Fix for the issue #515 --- src/Cxbx/WndMain.cpp | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/src/Cxbx/WndMain.cpp b/src/Cxbx/WndMain.cpp index 40f86a406..5e4ed1c3f 100644 --- a/src/Cxbx/WndMain.cpp +++ b/src/Cxbx/WndMain.cpp @@ -41,6 +41,8 @@ #include "CxbxKrnl/EmuShared.h" #include "ResCxbx.h" #include "CxbxVersion.h" +// I am not sure if this is already included in the other includes. If it is, remove it +#include "Shlwapi.h" #include @@ -80,15 +82,15 @@ void ClearHLECache() printf("Cleared HLE Cache\n"); } -WndMain::WndMain(HINSTANCE x_hInstance) : - Wnd(x_hInstance), - m_bCreated(false), - m_Xbe(0), - m_bXbeChanged(false), - m_bCanStart(true), - m_hwndChild(NULL), - m_KrnlDebug(DM_NONE), - m_CxbxDebug(DM_NONE), +WndMain::WndMain(HINSTANCE x_hInstance) : + Wnd(x_hInstance), + m_bCreated(false), + m_Xbe(0), + m_bXbeChanged(false), + m_bCanStart(true), + m_hwndChild(NULL), + m_KrnlDebug(DM_NONE), + m_CxbxDebug(DM_NONE), m_FlagsLLE(0), m_dwRecentXbe(0) { @@ -124,7 +126,7 @@ WndMain::WndMain(HINSTANCE x_hInstance) : DWORD dwDisposition, dwType, dwSize; HKEY hKey; - if(RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Cxbx-Reloaded", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS) + if(RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Cxbx-Reloaded", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE | KEY_SET_VALUE, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS) { dwType = REG_DWORD; dwSize = sizeof(DWORD); RegQueryValueEx(hKey, "LLEFLAGS", NULL, &dwType, (PBYTE)&m_FlagsLLE, &dwSize); @@ -147,6 +149,20 @@ WndMain::WndMain(HINSTANCE x_hInstance) : dwType = REG_SZ; dwSize = MAX_PATH; RegQueryValueEx(hKey, "KrnlDebugFilename", NULL, &dwType, (PBYTE)m_KrnlDebugFilename, &dwSize); + // Prevent using an incorrect path from the registry if the debug folders have been moved + + dwType = REG_SZ; dwSize = 0; + if(PathFileExists((LPCSTR)m_CxbxDebugFilename) == FALSE) + { + RegSetValueEx(hKey, "CxbxDebugFilename", 0, dwType, NULL, dwSize); + } + + dwType = REG_SZ; dwSize = 0; + if(PathFileExists((LPCSTR)m_KrnlDebugFilename) == FALSE) + { + RegSetValueEx(hKey, "KrnlDebugFilename", 0, dwType, NULL, dwSize); + } + int v=0; for(v=0;v Date: Fri, 28 Jul 2017 14:05:52 +0000 Subject: [PATCH 2/2] Better fix for the issue #515 --- src/Cxbx/WndMain.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Cxbx/WndMain.cpp b/src/Cxbx/WndMain.cpp index 5e4ed1c3f..8fae13cda 100644 --- a/src/Cxbx/WndMain.cpp +++ b/src/Cxbx/WndMain.cpp @@ -126,7 +126,7 @@ WndMain::WndMain(HINSTANCE x_hInstance) : DWORD dwDisposition, dwType, dwSize; HKEY hKey; - if(RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Cxbx-Reloaded", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE | KEY_SET_VALUE, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS) + if(RegCreateKeyEx(HKEY_CURRENT_USER, "Software\\Cxbx-Reloaded", 0, NULL, REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE, NULL, &hKey, &dwDisposition) == ERROR_SUCCESS) { dwType = REG_DWORD; dwSize = sizeof(DWORD); RegQueryValueEx(hKey, "LLEFLAGS", NULL, &dwType, (PBYTE)&m_FlagsLLE, &dwSize); @@ -151,16 +151,14 @@ WndMain::WndMain(HINSTANCE x_hInstance) : // Prevent using an incorrect path from the registry if the debug folders have been moved - dwType = REG_SZ; dwSize = 0; if(PathFileExists((LPCSTR)m_CxbxDebugFilename) == FALSE) { - RegSetValueEx(hKey, "CxbxDebugFilename", 0, dwType, NULL, dwSize); + m_CxbxDebugFilename = ""; } - dwType = REG_SZ; dwSize = 0; if(PathFileExists((LPCSTR)m_KrnlDebugFilename) == FALSE) { - RegSetValueEx(hKey, "KrnlDebugFilename", 0, dwType, NULL, dwSize); + m_KrnlDebugFilename = ""; } int v=0;