diff --git a/tccrun.c b/tccrun.c index 0609cb4c..17f1eebc 100644 --- a/tccrun.c +++ b/tccrun.c @@ -843,8 +843,10 @@ static int rt_get_caller_pc(addr_t *paddr, rt_context *rc, int level) *paddr = rc->ip; } else { addr_t *fp = (addr_t*)rc->fp; - while (--level) + while (--level && fp >= (addr_t*)0x1000) fp = (addr_t *)fp[-2]; + if (fp < (addr_t*)0x1000) + return -1; *paddr = fp[-1]; } return 0;