From 373b08a91e0aaa83f4e8f2f53f41fb21b17ce750 Mon Sep 17 00:00:00 2001 From: Mark Date: Thu, 21 Dec 2023 12:14:12 -0700 Subject: [PATCH] fix off-by-one error caused logtalk test to crash --- src/machine/compile.rs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/machine/compile.rs b/src/machine/compile.rs index d1c3e016..68d4da1f 100644 --- a/src/machine/compile.rs +++ b/src/machine/compile.rs @@ -47,6 +47,8 @@ fn lower_bound_of_target_clause(skeleton: &mut PredicateSkeleton, target_pos: us return 0; } + debug_assert!(skeleton.clauses.len() >= 2); + let index = target_pos - 1; let index = if let Some(index_loc) = skeleton.clauses[index] @@ -68,7 +70,7 @@ fn lower_bound_of_target_clause(skeleton: &mut PredicateSkeleton, target_pos: us index }; - index.clamp(0, skeleton.clauses.len() - 1) + index.clamp(0, skeleton.clauses.len() - 2) } fn derelictize_try_me_else( @@ -1518,6 +1520,7 @@ impl<'a, LS: LoadState<'a>> Loader<'a, LS> { } = self.compile_standalone_clause(clause, settings)?; let code_len = self.wam_prelude.code.len(); + standalone_skeleton.clauses[0].clause_start += code_len; let skeleton = match self -- 2.54.0