From a3031073a7383c2cb222afc5932de7b0f24e8d40 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Tue, 11 Nov 2003 21:10:24 +0000 Subject: [PATCH] demangle fix --- stepmania/src/archutils/Unix/CrashHandlerChild.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/stepmania/src/archutils/Unix/CrashHandlerChild.cpp b/stepmania/src/archutils/Unix/CrashHandlerChild.cpp index 79437d0cd5..77408493ec 100644 --- a/stepmania/src/archutils/Unix/CrashHandlerChild.cpp +++ b/stepmania/src/archutils/Unix/CrashHandlerChild.cpp @@ -36,6 +36,7 @@ struct BacktraceNames void FromString( CString str ); void Demangle(); CString Format() const; + BacktraceNames(): Address(0), Offset(0) { } }; #if defined(HAVE_LIBIBERTY) @@ -124,13 +125,14 @@ CString BacktraceNames::Format() const #include void BacktraceNames::FromAddr( void *p ) { + Address = (int) p; + Dl_info di; if( !dladdr(p, &di) ) return; Symbol = di.dli_sname; File = di.dli_fname; - Address = (int) p; Offset = (char*)(p)-(char*)di.dli_saddr; } @@ -139,11 +141,12 @@ void BacktraceNames::FromAddr( void *p ) #include void BacktraceNames::FromAddr( void *p ) { + Address = (int) p; + char **foo = backtrace_symbols(&p, 1); if( foo == NULL ) return; FromString( foo[0] ); - Address = (int) p; free(foo); }