This commit is contained in:
Glenn Maynard
2004-03-19 07:03:42 +00:00
parent f7d681e72f
commit 58067a1625
+13 -6
View File
@@ -283,7 +283,8 @@ void GetBacktrace( const void **buf, size_t size, const BacktraceContext *ctx )
#elif defined(BACKTRACE_METHOD_POWERPC_DARWIN) #elif defined(BACKTRACE_METHOD_POWERPC_DARWIN)
#include "archutils/Darwin/Crash.h" #include "archutils/Darwin/Crash.h"
typedef struct Frame { typedef struct Frame
{
Frame *stackPointer; Frame *stackPointer;
long conditionReg; long conditionReg;
void *linkReg; void *linkReg;
@@ -293,11 +294,17 @@ void InitializeBacktrace() { }
void GetBacktrace( const void **buf, size_t size, const BacktraceContext *ctx ) void GetBacktrace( const void **buf, size_t size, const BacktraceContext *ctx )
{ {
FramePtr frame = FramePtr(GetCrashedFramePtr()); Frame *frame = (Frame *) GetCrashedFramePtr();
unsigned i;
for (i=0; frame && frame->linkReg && i<size; ++i, frame=frame->stackPointer) unsigned i = 0;
buf[i] = frame->linkReg; while( frame && i < size-1 ) // -1 for NULL
i = (i == size ? size - 1 : i); {
if( frame->linkReg )
buf[i++] = frame->linkReg;
frame = frame->stackPointer;
}
buf[i] = NULL; buf[i] = NULL;
} }