diff options
-rw-r--r-- | src/os/windows/crashlog_win.cpp | 28 | ||||
-rw-r--r-- | src/os/windows/win32.cpp | 17 | ||||
-rw-r--r-- | src/stdafx.h | 10 |
3 files changed, 23 insertions, 32 deletions
diff --git a/src/os/windows/crashlog_win.cpp b/src/os/windows/crashlog_win.cpp index f97c7cfd8..f24d499dc 100644 --- a/src/os/windows/crashlog_win.cpp +++ b/src/os/windows/crashlog_win.cpp @@ -9,11 +9,21 @@ /** @file crashlog_win.cpp Implementation of a crashlogger for Windows */ +#if defined(WIN32_EXCEPTION_TRACKER) + #include "../../stdafx.h" -#include <windows.h> #include "win32.h" +#include "../../core/alloc_func.hpp" +#include "../../string_func.h" +#include "../../gamelog.h" +#include "../../saveload/saveload.h" +#include "../../fileio_func.h" +#include "../../rev.h" +#include "../../strings_func.h" + +#include <windows.h> +#include <dbghelp.h> -#ifdef _MSC_VER static const char *_exception_string = NULL; void SetExceptionString(const char *s, ...) { @@ -26,18 +36,6 @@ void SetExceptionString(const char *s, ...) _exception_string = strdup(buf); } -#endif - -#if defined(_MSC_VER) && !defined(WINCE) - -#include "../../core/alloc_func.hpp" -#include "../../string_func.h" -#include "../../gamelog.h" -#include "../../saveload/saveload.h" -#include "../../fileio_func.h" -#include "../../rev.h" -#include <dbghelp.h> -#include "../../strings_func.h" static void *_safe_esp; static char *_crash_msg; @@ -497,4 +495,4 @@ void Win32InitializeExceptions() SetUnhandledExceptionFilter(ExceptionHandler); } -#endif /* _MSC_VER */ +#endif /* WIN32_EXCEPTION_TRACKER */ diff --git a/src/os/windows/win32.cpp b/src/os/windows/win32.cpp index d84af727a..985a7a343 100644 --- a/src/os/windows/win32.cpp +++ b/src/os/windows/win32.cpp @@ -73,8 +73,8 @@ void ShowOSErrorBox(const char *buf, bool system) MyShowCursor(true); MessageBox(GetActiveWindow(), MB_TO_WIDE(buf), _T("Error!"), MB_ICONSTOP); -/* if exception tracker is enabled, we crash here to let the exception handler handle it. */ -#if defined(WIN32_EXCEPTION_TRACKER) && !defined(_DEBUG) + /* If exception tracker is enabled, we crash here to let the exception handler handle it. */ +#if defined(WIN32_EXCEPTION_TRACKER) && defined(NDEBUG) if (system) { SetExceptionString("%s", buf); *(byte*)0 = 0; @@ -383,20 +383,11 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi argc = ParseCommandLine(cmdline, argv, lengthof(argv)); #if defined(WIN32_EXCEPTION_TRACKER) - extern void Win32InitializeExceptions(); + void Win32InitializeExceptions(); Win32InitializeExceptions(); #endif -#if defined(WIN32_EXCEPTION_TRACKER_DEBUG) - _try { - LONG WINAPI ExceptionHandler(EXCEPTION_POINTERS *ep); -#endif - ttd_main(argc, argv); - -#if defined(WIN32_EXCEPTION_TRACKER_DEBUG) - } _except (ExceptionHandler(_exception_info())) {} -#endif - + ttd_main(argc, argv); return 0; } diff --git a/src/stdafx.h b/src/stdafx.h index abc9b684b..bd9caf0fa 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -229,11 +229,13 @@ #define strncasecmp strnicmp #endif - void SetExceptionString(const char *s, ...) WARN_FORMAT(1, 2); - #if defined(NDEBUG) && defined(WITH_ASSERT) - #undef assert - #define assert(expression) if (!(expression)) { SetExceptionString("Assertion failed at %s:%d: %s", __FILE__, __LINE__, #expression); *(byte*)0 = 0; } + #if defined(WIN32_EXCEPTION_TRACKER) + void SetExceptionString(const char *s, ...) WARN_FORMAT(1, 2); + #if defined(NDEBUG) && defined(WITH_ASSERT) + #undef assert + #define assert(expression) if (!(expression)) { SetExceptionString("Assertion failed at %s:%d: %s", __FILE__, __LINE__, #expression); *(byte*)0 = 0; } + #endif #endif /* MSVC doesn't have these :( */ |