From d7bf04d2c0f0791628ab1f1470ce5f18fef30484 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Sat, 4 Dec 2021 16:24:06 -0700 Subject: [PATCH] fix off by one bug in system_calls --- src/machine/system_calls.rs | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 2d699a06..dd1f7eab 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -354,7 +354,7 @@ impl MachineState { let cstr = PartialString::from(cstr_atom); let pstr_chars = cstr.as_str_from(0).chars().count(); - if pstr_chars < max_steps { + if pstr_chars <= max_steps { CycleSearchResult::ProperList(pstr_chars) } else { CycleSearchResult::UntouchedCStr(cstr_atom, max_steps) @@ -734,7 +734,7 @@ impl MachineState { // avoid allocating a String if possible ... Some(AtomOrString::Atom(cstr_atom)) } - (HeapCellValueTag::Atom, (atom, arity)) => { + (HeapCellValueTag::Atom, (atom, arity)) => { // TODO: Char?? if arity == 0 { // ... likewise. Some(AtomOrString::Atom(atom)) @@ -2698,13 +2698,13 @@ impl MachineState { &SystemClauseType::EnqueueAttributedVar => { let addr = self.store(self.deref(self.registers[1])); - read_heap_cell!(addr, - (HeapCellValueTag::AttrVar, h) => { - self.attr_var_init.attr_var_queue.push(h); - } - _ => { - } - ); + read_heap_cell!(addr, + (HeapCellValueTag::AttrVar, h) => { + self.attr_var_init.attr_var_queue.push(h); + } + _ => { + } + ); } &SystemClauseType::GetNextDBRef => { let a1 = self.store(self.deref(self.registers[1])); @@ -4424,11 +4424,6 @@ impl MachineState { &SystemClauseType::UnwindStack => { self.unwind_stack(); } - /* - &SystemClauseType::Variant => { - self.fail = self.structural_eq_test(); - } - */ &SystemClauseType::WAMInstructions => { let module_name = cell_as_atom!(self.store(self.deref(self.registers[1]))); -- 2.54.0