From 11cd42379bd4959e29e5eb47f405f21b5fc75039 Mon Sep 17 00:00:00 2001 From: Mark Date: Thu, 28 Sep 2023 15:25:57 -0600 Subject: [PATCH] do not deref AttrVar binding in redo_attr_var_binding (#2059) --- src/machine/system_calls.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index 897dab67..daa119fc 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -5659,7 +5659,9 @@ impl Machine { } #[inline(always)] pub(crate) fn redo_attr_var_binding(&mut self) { - let var = self.deref_register(1); + // registers[1] MUST NOT be dereferenced here. the original + // AttrVar binding site must be preserved. + let var = self.machine_st.registers[1]; let value = self.deref_register(2); debug_assert_eq!(HeapCellValueTag::AttrVar, var.get_tag()); -- 2.54.0