From 451a23e1598840071e280af1ac304bc599b67fe8 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Tue, 30 Mar 2004 00:43:35 +0000 Subject: [PATCH] add glibc assert() handlers, mostly for ALSA --- stepmania/src/Makefile.am | 3 ++- .../src/archutils/Unix/AssertionHandler.cpp | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 stepmania/src/archutils/Unix/AssertionHandler.cpp diff --git a/stepmania/src/Makefile.am b/stepmania/src/Makefile.am index e317b517cb..5f9c579f06 100644 --- a/stepmania/src/Makefile.am +++ b/stepmania/src/Makefile.am @@ -135,7 +135,8 @@ LowLevelWindow = arch/LowLevelWindow/LowLevelWindow.h \ arch/LowLevelWindow/LowLevelWindow_SDL.cpp arch/LowLevelWindow/LowLevelWindow_SDL.h ArchUtils = archutils/Unix/SignalHandler.cpp archutils/Unix/SignalHandler.h \ - archutils/Unix/GetSysInfo.cpp archutils/Unix/GetSysInfo.h + archutils/Unix/GetSysInfo.cpp archutils/Unix/GetSysInfo.h \ + archutils/Unix/AssertionHandler.cpp if USE_CRASH_HANDLER ArchUtils += archutils/Unix/CrashHandler.cpp archutils/Unix/CrashHandler.h \ diff --git a/stepmania/src/archutils/Unix/AssertionHandler.cpp b/stepmania/src/archutils/Unix/AssertionHandler.cpp new file mode 100644 index 0000000000..58357e14f9 --- /dev/null +++ b/stepmania/src/archutils/Unix/AssertionHandler.cpp @@ -0,0 +1,20 @@ +#include "global.h" +#include "RageUtil.h" +#include + +/* We can define this symbol to catch failed assert() calls. This is only used + * for library code that uses assert(); internally we always use ASSERT, which + * does this for all platforms, not just glibc. */ + +extern "C" void __assert_fail( const char *assertion, const char *file, unsigned int line, const char *function ) __THROW +{ + Checkpoints::SetCheckpoint( file, line, ssprintf("%s: %s", function, assertion ) ); + sm_crash( assertion ); +} + +extern "C" void __assert_perror_fail( int errnum, const char *file, unsigned int line, const char *function ) __THROW +{ + Checkpoints::SetCheckpoint( file, line, ssprintf("%s: %s", function, strerror(errnum) ) ); + sm_crash( strerror(errnum) ); +} +