catch existence_error exceptions from top-level calls to attribute_goals/3 (#1432)

This commit is contained in:
Mark Thom
2022-04-24 20:59:00 -06:00
parent 16137ace0e
commit ed89c43e48
2 changed files with 2 additions and 8 deletions

View File

@@ -1885,14 +1885,7 @@ impl MachineState {
}
(HeapCellValueTag::PStrLoc | HeapCellValueTag::PStrOffset, h) => {
let (focus, _) = pstr_loc_and_offset(&self.heap, h);
let pstr_atom = read_heap_cell!(self.heap[focus],
(HeapCellValueTag::CStr | HeapCellValueTag::PStr, pstr_atom) => {
pstr_atom
}
_ => {
unreachable!()
}
);
let pstr_atom = cell_as_atom!(self.heap[focus]);
if has_tail {
self.s = HeapPtr::PStrLocation(focus, offset);

View File

@@ -32,6 +32,7 @@ call_attribute_goals([Module|Modules], GoalCaller, AttrVars) :-
'$print_attribute_goals_exception'(Module, E) :-
( E = error(evaluation_error((Module:attribute_goals)/3), attribute_goals/3)
; E = error(existence_error(procedure, attribute_goals/3), attribute_goals/3)
-> true
; loader:write_error(E),
nl