diff --git a/LameXP_VS2008.vcproj b/LameXP_VS2008.vcproj
index c2794ea4..84440e16 100644
--- a/LameXP_VS2008.vcproj
+++ b/LameXP_VS2008.vcproj
@@ -71,6 +71,7 @@
AdditionalLibraryDirectories=""$(QTDIR)\lib";"$(QTDIR)\plugins\imageformats";"$(SolutionDir)\etc\Prerequisites\VisualLeakDetector\lib\Win32""
GenerateDebugInformation="true"
SubSystem="2"
+ EntryPointSymbol="lamexp_entry_point"
TargetMachine="1"
/>
@@ -265,6 +267,7 @@
OptimizeReferences="2"
EnableCOMDATFolding="2"
LinkTimeCodeGeneration="1"
+ EntryPointSymbol="lamexp_entry_point"
SetChecksum="true"
TargetMachine="1"
/>
@@ -635,7 +638,7 @@
@@ -645,7 +648,7 @@
@@ -655,7 +658,7 @@
diff --git a/src/Config.h b/src/Config.h
index 55b45367..bded25b3 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -30,7 +30,7 @@
#define VER_LAMEXP_MINOR_LO 5
#define VER_LAMEXP_TYPE Beta
#define VER_LAMEXP_PATCH 4
-#define VER_LAMEXP_BUILD 1089
+#define VER_LAMEXP_BUILD 1090
///////////////////////////////////////////////////////////////////////////////
// Tool versions (minimum expected versions!)
diff --git a/src/Global.cpp b/src/Global.cpp
index 5d5e7d77..748cf741 100644
--- a/src/Global.cpp
+++ b/src/Global.cpp
@@ -2176,6 +2176,22 @@ QStringList lamexp_available_codepages(bool noAliases)
return codecList;
}
+/*
+ * Entry point checks
+ */
+static bool lamexp_entry_check(void);
+static bool g_lamexp_entry_check = false;
+static bool g_lamexp_entry_check_result = lamexp_entry_check();
+static bool lamexp_entry_check(void)
+{
+ if(!g_lamexp_entry_check)
+ {
+ FatalAppExit(0, L"Application initialization has failed!");
+ TerminateProcess(GetCurrentProcess(), -1);
+ }
+ return true;
+}
+
/*
* Application entry point (runs before static initializers)
*/
@@ -2185,13 +2201,15 @@ extern "C"
int lamexp_entry_point(void)
{
+ /*MessageBoxA(NULL, "lamexp_entry_point", NULL, MB_TOPMOST);*/
+
if((!LAMEXP_DEBUG) && lamexp_check_for_debugger())
{
FatalAppExit(0, L"Not a debug build. Please unload debugger and try again!");
TerminateProcess(GetCurrentProcess(), -1);
}
- //Init global structs to NULL *before* constructors are called
+ //Zero *before* constructors are called
LAMEXP_ZERO_MEMORY(g_lamexp_argv);
LAMEXP_ZERO_MEMORY(g_lamexp_tools);
LAMEXP_ZERO_MEMORY(g_lamexp_currentTranslator);
@@ -2199,6 +2217,10 @@ extern "C"
LAMEXP_ZERO_MEMORY(g_lamexp_folder);
LAMEXP_ZERO_MEMORY(g_lamexp_ipc_ptr);
+ //Make sure we will pass the check
+ g_lamexp_entry_check = true;
+
+ //Now initialize the C Runtime library!
return WinMainCRTStartup();
}
}
diff --git a/src/Global.h b/src/Global.h
index a742cfbe..68ae2f68 100644
--- a/src/Global.h
+++ b/src/Global.h
@@ -185,7 +185,7 @@ SIZE_T lamexp_dbg_private_bytes(void);
//Memory check
#if LAMEXP_DEBUG
-#define LAMEXP_MEMORY_CHECK(FUNC, RETV, ...) \
+#define LAMEXP_MEMORY_CHECK(FUNC, RETV, ...) do \
{ \
SIZE_T _privateBytesBefore = lamexp_dbg_private_bytes(); \
RETV = FUNC(__VA_ARGS__); \
@@ -197,12 +197,14 @@ SIZE_T lamexp_dbg_private_bytes(void);
OutputDebugStringA(_buffer); \
OutputDebugStringA("----------\n"); \
} \
-}
+} \
+while(0)
#else
-#define LAMEXP_MEMORY_CHECK(FUNC, RETV, ...) \
+#define LAMEXP_MEMORY_CHECK(FUNC, RETV, ...) do \
{ \
RETV = __noop(__VA_ARGS__); \
-}
+} \
+while(0)
#endif
//Check for CPU-compatibility options