1
0
Fork 0

(svn r18446) -Fix (r17450): abort() doesn't trigger crashlog on windows

release/1.0
glx 2009-12-09 15:24:13 +00:00
parent 7a38435a63
commit 0c577dfde6
1 changed files with 12 additions and 0 deletions

View File

@ -20,6 +20,7 @@
#include "../../gamelog.h"
#include <windows.h>
#include <signal.h>
/**
* Windows implementation for the crash logger.
@ -407,6 +408,11 @@ static LONG WINAPI ExceptionHandler(EXCEPTION_POINTERS *ep)
extern "C" void *_get_safe_esp();
#endif
static void CDECL CustomAbort(int signal)
{
RaiseException(0xE1212012, 0, 0, NULL);
}
/* static */ void CrashLog::InitialiseCrashLog()
{
#if defined(_MSC_VER)
@ -421,6 +427,12 @@ extern "C" void *_get_safe_esp();
asm("movl %esp, __safe_esp");
#endif
/* SIGABRT is not an unhandled exception, so we need to intercept it. */
signal(SIGABRT, CustomAbort);
#if defined(_MSC_VER)
/* Don't show abort message as we will get the crashlog window anyway. */
_set_abort_behavior(0, _WRITE_ABORT_MSG);
#endif
SetUnhandledExceptionFilter(ExceptionHandler);
}