From: Mark Thom Date: Tue, 4 Oct 2022 16:21:50 +0000 (-0600) Subject: fix crash in read_term (#1616) X-Git-Tag: v0.9.1^2~9 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=140149f05170fe452b9fdd1be935b0bb41871041;p=scryer-prolog.git fix crash in read_term (#1616) --- diff --git a/src/machine/machine_state.rs b/src/machine/machine_state.rs index 05ff14c8..1d4be14a 100644 --- a/src/machine/machine_state.rs +++ b/src/machine/machine_state.rs @@ -536,7 +536,7 @@ impl MachineState { loop { match self.read(stream, &indices.op_dir) { - Ok(term_write_result) => { + Ok(mut term_write_result) => { let heap_loc = read_heap_cell!(self.heap[term_write_result.heap_loc], (HeapCellValueTag::PStr | HeapCellValueTag::PStrOffset) => { pstr_loc_as_cell!(term_write_result.heap_loc) @@ -568,6 +568,10 @@ impl MachineState { } } + for var in term_write_result.var_dict.values_mut() { + *var = heap_bound_deref(&self.heap, *var); + } + let singleton_var_list = push_var_eq_functors( &mut self.heap, term_write_result.var_dict.iter().filter(|(_, binding)| {