]> Repositorios git - scryer-prolog.git/commitdiff
fix off-by-1 bug in ''/4 (#2037)
authorMark <[email protected]>
Sun, 24 Sep 2023 00:32:32 +0000 (18:32 -0600)
committerMark <[email protected]>
Sun, 24 Sep 2023 00:32:32 +0000 (18:32 -0600)
src/machine/system_calls.rs

index 9e2d9760da57505933376d81b5f2ef674c78a4bd..4a54ad911090e35cb63e2a5f49d69a9323fd53be 100644 (file)
@@ -180,12 +180,6 @@ impl BrentAlgState {
     }
 
     pub fn to_result(mut self, heap: &[HeapCellValue]) -> CycleSearchResult {
-        /*
-        if let Some(var) = heap[self.hare].as_var() {
-            return CycleSearchResult::PartialList(self.num_steps(), var);
-        }
-        */
-
         loop {
             read_heap_cell!(heap[self.hare],
                 (HeapCellValueTag::PStrOffset) => {
@@ -248,7 +242,7 @@ impl BrentAlgState {
                 let cstr = PartialString::from(cstr_atom);
                 let num_chars = cstr.as_str_from(offset).chars().count();
 
-                if self.max_steps == -1 || self.num_steps() + num_chars < self.max_steps as usize {
+                if self.max_steps == -1 || self.num_steps() + num_chars <= self.max_steps as usize {
                     self.pstr_chars += num_chars;
                     Some(CycleSearchResult::ProperList(self.num_steps()))
                 } else {
@@ -261,7 +255,7 @@ impl BrentAlgState {
                 let pstr = PartialString::from(pstr_atom);
                 let num_chars = pstr.as_str_from(offset).chars().count();
 
-                if self.max_steps == -1 || self.num_steps() + num_chars < self.max_steps as usize {
+                if self.max_steps == -1 || self.num_steps() + num_chars <= self.max_steps as usize {
                     self.pstr_chars += num_chars - 1;
                     self.step(h+1)
                 } else {