Skip to content

Commit 299df50

Browse files
committed
clamp lower_bound_of_target_clause index (#840)
1 parent 3353306 commit 299df50

File tree

2 files changed

+7
-9
lines changed

2 files changed

+7
-9
lines changed

src/machine/compile.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ fn lower_bound_of_target_clause(skeleton: &mut PredicateSkeleton, target_pos: us
4949

5050
let index = target_pos - 1;
5151

52-
if let Some(index_loc) = skeleton.clauses[index]
52+
let index = if let Some(index_loc) = skeleton.clauses[index]
5353
.opt_arg_index_key
5454
.switch_on_term_loc()
5555
{
@@ -66,7 +66,9 @@ fn lower_bound_of_target_clause(skeleton: &mut PredicateSkeleton, target_pos: us
6666
}
6767
} else {
6868
index
69-
}
69+
};
70+
71+
index.clamp(0, skeleton.clauses.len() - 1)
7072
}
7173

7274
fn derelictize_try_me_else(

src/machine/load_state.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -504,13 +504,9 @@ impl<'a, LS: LoadState<'a>> Loader<'a, LS> {
504504
if !code_index.is_undefined() && !code_index.is_dynamic_undefined() {
505505
let old_index_ptr = code_index.replace(IndexPtr::undefined());
506506

507-
self.payload
508-
.retraction_info
509-
.push_record(RetractionRecord::ReplacedModulePredicate(
510-
module_name,
511-
*key,
512-
old_index_ptr,
513-
));
507+
self.payload.retraction_info.push_record(
508+
RetractionRecord::ReplacedModulePredicate(module_name, *key, old_index_ptr),
509+
);
514510
}
515511
}
516512

0 commit comments

Comments
 (0)