From 299df50066cd82acafda0bb5dd797853f20b47f0 Mon Sep 17 00:00:00 2001 From: Mark Date: Mon, 18 Dec 2023 15:21:30 -0700 Subject: [PATCH] clamp lower_bound_of_target_clause index (#840) --- src/machine/compile.rs | 6 ++++-- src/machine/load_state.rs | 10 +++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/machine/compile.rs b/src/machine/compile.rs index 048631aea..d1c3e0168 100644 --- a/src/machine/compile.rs +++ b/src/machine/compile.rs @@ -49,7 +49,7 @@ fn lower_bound_of_target_clause(skeleton: &mut PredicateSkeleton, target_pos: us let index = target_pos - 1; - if let Some(index_loc) = skeleton.clauses[index] + let index = if let Some(index_loc) = skeleton.clauses[index] .opt_arg_index_key .switch_on_term_loc() { @@ -66,7 +66,9 @@ fn lower_bound_of_target_clause(skeleton: &mut PredicateSkeleton, target_pos: us } } else { index - } + }; + + index.clamp(0, skeleton.clauses.len() - 1) } fn derelictize_try_me_else( diff --git a/src/machine/load_state.rs b/src/machine/load_state.rs index 456cfb9aa..f340ad033 100644 --- a/src/machine/load_state.rs +++ b/src/machine/load_state.rs @@ -504,13 +504,9 @@ impl<'a, LS: LoadState<'a>> Loader<'a, LS> { if !code_index.is_undefined() && !code_index.is_dynamic_undefined() { let old_index_ptr = code_index.replace(IndexPtr::undefined()); - self.payload - .retraction_info - .push_record(RetractionRecord::ReplacedModulePredicate( - module_name, - *key, - old_index_ptr, - )); + self.payload.retraction_info.push_record( + RetractionRecord::ReplacedModulePredicate(module_name, *key, old_index_ptr), + ); } }