From 58067a162591d8f0e26d6642a4c0c0df551a637d Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Fri, 19 Mar 2004 07:03:42 +0000 Subject: [PATCH] cleanup --- stepmania/src/archutils/Unix/Backtrace.cpp | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/stepmania/src/archutils/Unix/Backtrace.cpp b/stepmania/src/archutils/Unix/Backtrace.cpp index 43bf432351..07bc13b211 100644 --- a/stepmania/src/archutils/Unix/Backtrace.cpp +++ b/stepmania/src/archutils/Unix/Backtrace.cpp @@ -283,7 +283,8 @@ void GetBacktrace( const void **buf, size_t size, const BacktraceContext *ctx ) #elif defined(BACKTRACE_METHOD_POWERPC_DARWIN) #include "archutils/Darwin/Crash.h" -typedef struct Frame { +typedef struct Frame +{ Frame *stackPointer; long conditionReg; void *linkReg; @@ -293,12 +294,18 @@ void InitializeBacktrace() { } void GetBacktrace( const void **buf, size_t size, const BacktraceContext *ctx ) { - FramePtr frame = FramePtr(GetCrashedFramePtr()); - unsigned i; - for (i=0; frame && frame->linkReg && istackPointer) - buf[i] = frame->linkReg; - i = (i == size ? size - 1 : i); - buf[i] = NULL; + Frame *frame = (Frame *) GetCrashedFramePtr(); + + unsigned i = 0; + while( frame && i < size-1 ) // -1 for NULL + { + if( frame->linkReg ) + buf[i++] = frame->linkReg; + + frame = frame->stackPointer; + } + + buf[i] = NULL; } #else