diff --git a/stepmania/src/global.cpp b/stepmania/src/global.cpp index 931ee21de4..89f5940e4b 100644 --- a/stepmania/src/global.cpp +++ b/stepmania/src/global.cpp @@ -4,33 +4,38 @@ #define _WIN32_WINDOWS 0x0410 // include Win98 stuff #include "windows.h" #include "archutils/Win32/Crash.h" -void NORETURN sm_crash( const char *reason ) -{ - /* If we're being debugged, throw a debug break so it'll suspend the process. */ - if( IsDebuggerPresent() ) - DebugBreak(); - else - ForceCrashHandler( reason ); +#endif - /* Do something after the above, so the call/return isn't optimized to a jmp; that - * way, this function will appear in backtrace stack traces. */ - _asm nop; -} -#elif defined(LINUX) || defined(DARWIN) +#if defined(CRASH_HANDLER) && (defined(LINUX) || defined(DARWIN)) #include "archutils/Unix/CrashHandler.h" #include +#endif + void NORETURN sm_crash( const char *reason ) { +#if defined(_WINDOWS) + /* If we're being debugged, throw a debug break so it'll suspend the process. */ + if( IsDebuggerPresent() ) + { + DebugBreak(); + return; + } +#endif + +#if defined(CRASH_HANDLER) ForceCrashHandler( reason ); - _exit( 1 ); -} #else -void NORETURN sm_crash( const char *reason ) -{ *(char*)0=0; /* This isn't actually reached. We just do this to convince the compiler that the * function really doesn't return. */ while(1); +#endif + +#if defined(_WINDOWS) + /* Do something after the above, so the call/return isn't optimized to a jmp; that + * way, this function will appear in backtrace stack traces. */ + _asm nop; +#endif } -#endif +