/* Need to undef new if including crtdbg.h */
#ifdef new
- #undef new
+ #undef new
#endif
#include <crtdbg.h>
#if defined(__WXDEBUG__) && wxUSE_GLOBAL_MEMORY_OPERATORS && wxUSE_DEBUG_NEW_ALWAYS
- #define new new(__FILE__,__LINE__)
+ #define new new(__FILE__,__LINE__)
#endif
-
-#endif
+#endif // wxUSE_VC_CRTDBG
extern char *wxBuffer;
extern char *wxOsVersion;
#if !defined(_WINDLL) || (defined(_WINDLL) && defined(WXMAKINGDLL))
+// temporarily disable this warning
+#ifdef _MSC_VER
+ #pragma warning(disable: 4715) // not all control paths return a value
+#endif // Visual C++
+
//// Main wxWindows entry point
int wxEntry(WXHINSTANCE hInstance,
WXHINSTANCE WXUNUSED(hPrevInstance),
int nCmdShow,
bool enterLoop)
{
-#if !defined(__WXDEBUG__) && !defined(__BORLANDC__) && !defined(__WATCOMC__) // take everything into a try-except block in release build
- try {
+ // take everything into a try-except block in release build
+ // FIXME other compilers must support Win32 SEH (structured exception
+ // handling) too, just find the appropriate keyword in their docs!
+ // Please note that it's _not_ the same as C++ exceptions!
+#if !defined(__WXDEBUG__) && defined(_MSC_VER)
+ #define CATCH_PROGRAM_EXCEPTIONS
+
+ __try {
+#else
+ #undef CATCH_PROGRAM_EXCEPTIONS
#endif
wxhInstance = (HINSTANCE) hInstance;
wxApp::CleanUp();
return retValue;
-#if !defined(__WXDEBUG__) && !defined(__BORLANDC__) && !defined(__WATCOMC__) // catch exceptions only in release build
+
+#ifdef CATCH_PROGRAM_EXCEPTIONS
}
- except ( EXCEPTION_EXECUTE_HANDLER ) {
+ __except ( EXCEPTION_EXECUTE_HANDLER ) {
/*
if ( wxTheApp )
wxTheApp->OnFatalException();
*/
::ExitProcess(3); // the same exit code as abort()
- return 0;
+
+ // NOTREACHED
}
-#endif //debug
+#endif // CATCH_PROGRAM_EXCEPTIONS
}
+// restore warning state
+#ifdef _MSC_VER
+ #pragma warning(default: 4715) // not all control paths return a value
+#endif // Visual C++
+
#else /* _WINDLL */
//// Entry point for DLLs