Skip to content

Commit 1ed4fe6

Browse files
authored
Merge pull request #2756 from adri326/fix-load-context-unreachable
Fix load_context_module triggering unreachable!()
2 parents 2856cc4 + eff094c commit 1ed4fe6

File tree

3 files changed

+11
-2
lines changed

3 files changed

+11
-2
lines changed

src/machine/dispatch.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4812,11 +4812,11 @@ impl Machine {
48124812
step_or_fail!(self, self.machine_st.p = self.machine_st.cp);
48134813
}
48144814
&Instruction::CallLoadContextModule => {
4815-
self.load_context_module(self.machine_st.registers[1]);
4815+
self.load_context_module(self.deref_register(1));
48164816
step_or_fail!(self, self.machine_st.p += 1);
48174817
}
48184818
&Instruction::ExecuteLoadContextModule => {
4819-
self.load_context_module(self.machine_st.registers[1]);
4819+
self.load_context_module(self.deref_register(1));
48204820
step_or_fail!(self, self.machine_st.p = self.machine_st.cp);
48214821
}
48224822
&Instruction::CallLoadContextStream => {

tests-pl/load-context-unreachable.pl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
:- initialization((M = user, loader:load_context(M))).

tests/scryer/issues.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,11 @@ fn issue2588_load_html() {
2525
fn call_qualification() {
2626
load_module_test("tests-pl/issue2361-call-qualified.pl", "");
2727
}
28+
29+
// PR #2756: ensures that calling load_context with a bound variable doesn't trigger unreachable!()
30+
#[serial]
31+
#[test]
32+
#[cfg_attr(miri, ignore = "it takes too long to run")]
33+
fn load_context_unreachable() {
34+
load_module_test("tests-pl/load-context-unreachable.pl", "");
35+
}

0 commit comments

Comments
 (0)