From 709dc041ebf7cc47d41a05dc35f7a9a18c8d3691 Mon Sep 17 00:00:00 2001 From: Markus Triska Date: Thu, 1 May 2025 09:18:00 +0200 Subject: [PATCH] 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. --- src/machine/machine_state_impl.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); } -- 2.54.0