]> 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]>
Tue, 8 Jul 2025 04:59:50 +0000 (21:59 -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 9313e9e96d661d50c585b2ace3071768a4d058e3..a9240f228f9d0da8e0dd37431fa32caf45981522 100644 (file)
@@ -1287,9 +1287,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()));