cleanup
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user