From 202c37ce44427d47ebb83461e7b6da4d63e187b1 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Fri, 16 Apr 2004 07:16:37 +0000 Subject: [PATCH] handle SIGABRT --- stepmania/src/arch/ArchHooks/ArchHooks_darwin.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/stepmania/src/arch/ArchHooks/ArchHooks_darwin.cpp b/stepmania/src/arch/ArchHooks/ArchHooks_darwin.cpp index 1857c9eccd..4427213be8 100644 --- a/stepmania/src/arch/ArchHooks/ArchHooks_darwin.cpp +++ b/stepmania/src/arch/ArchHooks/ArchHooks_darwin.cpp @@ -15,6 +15,7 @@ #include "RageTimer.h" #include "archutils/Darwin/Crash.h" #include "archutils/Unix/CrashHandler.h" +#include "archutils/Unix/SignalHandler.h" #include "StepMania.h" #define Random Random_ // work around namespace pollution #include @@ -49,10 +50,22 @@ SInt16 ShowAlert(int type, CFStringRef message, CFStringRef OK, CFStringRef canc return result; } +/* The signal handler is only used to trap SIGABRT; for other signals, just return + * and the exceptoin handler will take care of it. */ +static void DoCrashSignalHandler( int signal, siginfo_t *si, const ucontext_t *uc ) +{ + if( signal != SIGABRT ) + return; + + CrashSignalHandler( signal, si, uc ); + /* not reached */ +} + ArchHooks_darwin::ArchHooks_darwin() { CrashHandlerHandleArgs(g_argc, g_argv); InstallExceptionHandler(CrashExceptionHandler); + SignalHandler::OnClose( DoCrashSignalHandler ); TimeCritMutex = new RageMutex("TimeCritMutex"); }