summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDarkvater <darkvater@openttd.org>2005-09-15 21:59:07 +0000
committerDarkvater <darkvater@openttd.org>2005-09-15 21:59:07 +0000
commite9401f09a71532508620689659046c6688a31ba4 (patch)
treed8d95190639e5f845a7e00c3c2401fc7dbc3c51e
parent7164ff86f9e7c545febab03ea5dcb19b57ec8bbb (diff)
downloadopenttd-e9401f09a71532508620689659046c6688a31ba4.tar.xz
(svn r2954) - Force assertion message to be output to a messagebox instead to the console which MinGW32 had the habit of doing. Using undocumented (in mingw) __set_error_mode() function.
-rw-r--r--win32.c35
1 files changed, 18 insertions, 17 deletions
diff --git a/win32.c b/win32.c
index 9effbabf8..e2f2d95bc 100644
--- a/win32.c
+++ b/win32.c
@@ -61,13 +61,8 @@ bool LoadLibraryList(Function proc[], const char* dll)
}
#ifdef _MSC_VER
-
static const char *_exception_string;
-static void *_safe_esp;
-static char *_crash_msg;
-static bool _expanded;
-static bool _did_emerg_save;
-static int _ident;
+#endif
void ShowOSErrorBox(const char *buf)
{
@@ -83,6 +78,14 @@ void ShowOSErrorBox(const char *buf)
#endif
}
+#ifdef _MSC_VER
+
+static void *_safe_esp;
+static char *_crash_msg;
+static bool _expanded;
+static bool _did_emerg_save;
+static int _ident;
+
typedef struct DebugFileInfo {
uint32 size;
uint32 crc32;
@@ -544,15 +547,6 @@ static void Win32InitializeExceptions(void)
SetUnhandledExceptionFilter(ExceptionHandler);
}
-#else
-/* Get rid of unused variable warnings.. ShowOSErrorBox
- * is now used twice, once in MSVC, and once in all other Win
- * compilers (cygwin, mingw, etc.) */
-void ShowOSErrorBox(const char *buf)
-{
- MyShowCursor(true);
- MessageBoxA(GetActiveWindow(), buf, "Error!", MB_ICONSTOP);
-}
#endif
#ifndef __MINGW32__
@@ -1064,6 +1058,14 @@ void ShowInfo(const char *str)
}
}
+#ifdef __MINGW32__
+ /* _set_error_mode() constants&function (do not exist in mingw headers) */
+ #define _OUT_TO_DEFAULT 0
+ #define _OUT_TO_STDERR 1
+ #define _OUT_TO_MSGBOX 2
+ #define _REPORT_ERRMODE 3
+ int _set_error_mode(int);
+#endif
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
@@ -1075,8 +1077,7 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
CreateConsole();
#endif
- // make sure we have an autosave folder - Done in DeterminePaths
- // CreateDirectory("autosave", NULL);
+ _set_error_mode(_OUT_TO_MSGBOX); // force assertion output to messagebox
// setup random seed to something quite random
#if defined(_MSC_VER)