]> Repositorios git - scryer-prolog.git/commitdiff
dereference clause_clause value, reserve more parser space (#2579)
authorMark Thom <[email protected]>
Fri, 15 Nov 2024 05:04:09 +0000 (22:04 -0700)
committerMark Thom <[email protected]>
Wed, 23 Apr 2025 06:32:32 +0000 (23:32 -0700)
src/machine/loader.rs
src/parser/parser.rs

index 18a4c9737dbc8e323f9a773c31d803ac531db27e..34499ced050d5ac50c2e1e60e05cebcf83420925 100644 (file)
@@ -2462,7 +2462,7 @@ impl<'a> Loader<'a, LiveLoadAndMachineState<'a>> {
         }
 
         let machine_st = LiveLoadAndMachineState::machine_st(&mut self.payload);
-        let value = machine_st.store(MachineState::deref(&machine_st, machine_st[term_reg]));
+        let value = machine_st.store(MachineState::deref(machine_st, machine_st[term_reg]));
 
         self.add_clause_clause_if_dynamic(value)?;
 
index b67b1a4db763050a499035a93dbbc3c32e6af7ce..c726ced20a0b4c2b07e340b41c1e4dc47cc20035 100644 (file)
@@ -1282,9 +1282,9 @@ impl<'a, R: CharRead> LexerParser<'a, R> {
         };
 
         // the parser uses conditional indirection in many places so
-        // the reserved size should be at least 3 * term_byte_size
+        // the reserved size should be at least 4 * term_byte_size
         // so all cells are accounted for.
-        let writer = match self.machine_st.heap.reserve(cell_index!(3 * term_byte_size)) {
+        let writer = match self.machine_st.heap.reserve(cell_index!(4 * term_byte_size)) {
             Ok(term) => term,
             Err(_err_loc) => {
                 return Err(ParserError::ResourceError(self.loc_to_err_src()));