From: Markus Triska Date: Thu, 1 May 2025 07:18:00 +0000 (+0200) Subject: FIXED: correct partial string tail calculation in arg/3 X-Git-Tag: v0.10.0~35^2~16 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=709dc041ebf7cc47d41a05dc35f7a9a18c8d3691;p=scryer-prolog.git FIXED: correct partial string tail calculation in arg/3 This addresses another aspect of #2924, found by @haijinSk. Thank you again! Example: ?- "aaaaaaa" = [_,_,_,_,_,_|T], arg(2, T, 2). false. --- diff --git a/src/machine/machine_state_impl.rs b/src/machine/machine_state_impl.rs index baa25394..038a16d7 100644 --- a/src/machine/machine_state_impl.rs +++ b/src/machine/machine_state_impl.rs @@ -933,7 +933,7 @@ impl MachineState { if char_iter.next().is_some() { unify_fn!(*self, pstr_loc_as_cell!(pstr_loc + c.len_utf8()), a3); } else { - let tail_idx = Heap::pstr_tail_idx(pstr_loc); + let tail_idx = Heap::pstr_tail_idx(pstr_loc + c.len_utf8()); unify_fn!(*self, self.heap[tail_idx], a3); }