diff --git a/src/machine/machine_state_impl.rs b/src/machine/machine_state_impl.rs index 931f0f11..85fac031 100644 --- a/src/machine/machine_state_impl.rs +++ b/src/machine/machine_state_impl.rs @@ -544,6 +544,9 @@ impl MachineState { (HeapCellValueTag::Atom, (name, arity)) => { self.fail = !(arity == 0 && name == atom); } + (HeapCellValueTag::CStr, cstr_atom) if atom == atom!("[]") => { + self.fail = cstr_atom != atom!(""); + } (HeapCellValueTag::Char, c1) => { if let Some(c2) = atom.as_char() { self.fail = c1 != c2; diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index becc644e..a407d7fa 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -2494,9 +2494,10 @@ impl Machine { } }; + let output = self.machine_st.store(self.machine_st.deref(self.machine_st.registers[3])); let atom = self.machine_st.atom_tbl.build_with(&string); - self.machine_st.unify_complete_string(atom, self.machine_st.store(self.machine_st.deref(self.machine_st.registers[3]))); + self.machine_st.unify_complete_string(atom, output); Ok(()) }