vm: don't suffer null return addresses
parent
ee656387ea
commit
5b9aee2c91
|
@ -96,18 +96,13 @@ cell factor_vm::frame_offset(stack_frame *frame)
|
||||||
{
|
{
|
||||||
char *entry_point = (char *)frame_code(frame)->entry_point();
|
char *entry_point = (char *)frame_code(frame)->entry_point();
|
||||||
char *return_address = (char *)FRAME_RETURN_ADDRESS(frame,this);
|
char *return_address = (char *)FRAME_RETURN_ADDRESS(frame,this);
|
||||||
if(return_address)
|
FACTOR_ASSERT(return_address != 0);
|
||||||
return return_address - entry_point;
|
return return_address - entry_point;
|
||||||
else
|
|
||||||
return (cell)-1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void factor_vm::set_frame_offset(stack_frame *frame, cell offset)
|
void factor_vm::set_frame_offset(stack_frame *frame, cell offset)
|
||||||
{
|
{
|
||||||
char *entry_point = (char *)frame_code(frame)->entry_point();
|
char *entry_point = (char *)frame_code(frame)->entry_point();
|
||||||
if(offset == (cell)-1)
|
|
||||||
FRAME_RETURN_ADDRESS(frame,this) = NULL;
|
|
||||||
else
|
|
||||||
FRAME_RETURN_ADDRESS(frame,this) = entry_point + offset;
|
FRAME_RETURN_ADDRESS(frame,this) = entry_point + offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue