From: Mark Thom Date: Thu, 20 Feb 2020 17:59:42 +0000 (-0700) Subject: correct PStrLocation offset bug in copier.rs X-Git-Tag: v0.8.119~82 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=d48ac09e25d4b207e471d453e3c4deeab16140f2;p=scryer-prolog.git correct PStrLocation offset bug in copier.rs --- diff --git a/src/prolog/heap_iter.rs b/src/prolog/heap_iter.rs index ca0c25a1..e3780b20 100644 --- a/src/prolog/heap_iter.rs +++ b/src/prolog/heap_iter.rs @@ -84,7 +84,7 @@ impl<'a> HCPreOrderIterator<'a> { Addr::PStrLocation(h, n) => { if let HeapCellValue::PartialString(ref pstr) = &self.machine_st.heap[h] { let s = pstr.block_as_str(); - + if let Some(c) = s[n ..].chars().next() { if pstr.len() > n + c.len_utf8() { self.state_stack.push(Addr::PStrLocation(h, n + c.len_utf8())); diff --git a/src/prolog/machine/copier.rs b/src/prolog/machine/copier.rs index c9520848..1dda5d66 100644 --- a/src/prolog/machine/copier.rs +++ b/src/prolog/machine/copier.rs @@ -191,7 +191,7 @@ impl CopyTermState { let threshold = self.target.threshold(); self.target[self.scan] = - HeapCellValue::Addr(Addr::PStrLocation(threshold, n)); + HeapCellValue::Addr(Addr::PStrLocation(threshold, 0)); self.scan += 1;