mirror of
https://github.com/c3lang/c3c.git
synced 2026-02-27 12:01:16 +00:00
Fix to backtrace
This commit is contained in:
@@ -55,13 +55,15 @@ const CInt __W_CONTINUED = 0xffff;
|
||||
const CInt WNOHANG = 1;
|
||||
const CInt WUNTRACES = 2;
|
||||
|
||||
fn CInt backtrace(void** buffer, CInt size) @weak @extern("backtrace")
|
||||
fn CInt backtrace(void** buffer, CInt size) @extern("backtrace") @weak
|
||||
{
|
||||
if (size < 1) return 0;
|
||||
void*[128] buffer_first;
|
||||
CInt i;
|
||||
for (i = 0; (uptr)builtin::get_frameaddress(i + 1) > 1 && i < size; i++)
|
||||
for (i = 0; i < size; i++)
|
||||
{
|
||||
uptr frame = (uptr)builtin::get_frameaddress(i + 1);
|
||||
if (!frame || frame & 0x1) break;
|
||||
buffer[i] = builtin::get_returnaddress(i);
|
||||
if (!buffer[i]) break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user