mirror of
https://github.com/urbit/ares.git
synced 2024-11-26 09:57:56 +03:00
interpreter: check for copying flag in exit
This commit is contained in:
parent
f68a95e1f2
commit
45f7f00dc9
@ -1185,6 +1185,11 @@ fn exit(
|
||||
unsafe {
|
||||
context.restore(snapshot);
|
||||
|
||||
if context.stack.copying() {
|
||||
assert!(context.stack.get_frame_pointer() != virtual_frame);
|
||||
context.stack.frame_pop();
|
||||
}
|
||||
|
||||
let stack = &mut context.stack;
|
||||
let mut preserve = match error {
|
||||
Error::ScryBlocked(path) => path,
|
||||
@ -1192,6 +1197,7 @@ fn exit(
|
||||
// Return $tang of traces
|
||||
let h = *(stack.local_noun_pointer(0));
|
||||
// XX: Small chance of clobbering something important after OOM?
|
||||
// XX: what if we OOM while making a stack trace
|
||||
T(stack, &[h, t])
|
||||
}
|
||||
};
|
||||
|
@ -137,6 +137,10 @@ impl NockStack {
|
||||
};
|
||||
}
|
||||
|
||||
pub fn copying(&self) -> bool {
|
||||
self.pc
|
||||
}
|
||||
|
||||
/** Current frame pointer of this NockStack */
|
||||
pub fn get_frame_pointer(&self) -> *const u64 {
|
||||
self.frame_pointer
|
||||
|
Loading…
Reference in New Issue
Block a user