From: Mark Thom Date: Wed, 23 Feb 2022 06:45:04 +0000 (-0700) Subject: recognize [] as equivalent to "" in unify_atom (#1288) X-Git-Tag: v0.9.0^2~15 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=d92d8bce898d54a07321236108878b5dcd7f12ad;p=scryer-prolog.git recognize [] as equivalent to "" in unify_atom (#1288) --- 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(()) }