Fix size of buffer for backtrace

This commit is contained in:
rfm 2025-01-09 11:06:31 +00:00
parent f15eb90b8a
commit 8dbb7ea40a

View file

@ -593,16 +593,21 @@ struct GSBacktraceState
static _Unwind_Reason_Code
GSUnwindCallback(struct _Unwind_Context* context, void* arg)
{
struct GSBacktraceState *state = (struct GSBacktraceState*)arg;
uintptr_t pc = _Unwind_GetIP(context);
if (pc) {
if (state->current == state->end) {
return _URC_END_OF_STACK;
} else {
*state->current++ = (void*)pc;
}
struct GSBacktraceState *state = (struct GSBacktraceState*)arg;
uintptr_t pc = _Unwind_GetIP(context);
if (pc)
{
if (state->current == state->end)
{
return _URC_END_OF_STACK;
}
else
{
*state->current++ = (void*)pc;
}
}
return 0; //_URC_OK/_URC_NO_REASON
return 0; //_URC_OK/_URC_NO_REASON
}
#endif /* WITH_UNWIND && !HAVE_BACKTRACE */
@ -994,7 +999,7 @@ GSPrivateReturnAddresses(NSUInteger **returns)
GS_MUTEX_UNLOCK(traceLock);
#elif defined(HAVE_BACKTRACE)
void *addr[MAXFRAMES*sizeof(NSUInteger)];
void *addr[MAXFRAMES];
numReturns = backtrace(addr, MAXFRAMES);
if (numReturns > 0)