From 3926d006b0a9f517098061b30879f2ff492cbafe Mon Sep 17 00:00:00 2001 From: Darkvater Date: Thu, 15 Sep 2005 21:59:07 +0000 Subject: (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. --- win32.c | 35 ++++++++++++++++++----------------- 1 file 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) -- cgit v1.2.3-70-g09d2