From b746a8f9ab191da151ba06e2dd5fbe41f23382b2 Mon Sep 17 00:00:00 2001 From: Mark Date: Thu, 6 Jul 2023 11:38:12 -0600 Subject: [PATCH] add stream alias check to atom/1 (#1855) --- src/machine/dispatch.rs | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/machine/dispatch.rs b/src/machine/dispatch.rs index ba13cf5b..11e6d95d 100644 --- a/src/machine/dispatch.rs +++ b/src/machine/dispatch.rs @@ -2376,6 +2376,20 @@ impl Machine { (HeapCellValueTag::Char) => { self.machine_st.p += 1; } + (HeapCellValueTag::Cons, c) => { + match_untyped_arena_ptr!(c, + (ArenaHeaderTag::Stream, stream) => { + if stream.options().get_alias().is_none() { + self.machine_st.backtrack(); + } else { + self.machine_st.p += 1; + } + } + _ => { + self.machine_st.backtrack(); + } + ); + } _ => { self.machine_st.backtrack(); } @@ -2405,6 +2419,20 @@ impl Machine { (HeapCellValueTag::Char) => { self.machine_st.p = self.machine_st.cp; } + (HeapCellValueTag::Cons, c) => { + match_untyped_arena_ptr!(c, + (ArenaHeaderTag::Stream, stream) => { + if stream.options().get_alias().is_none() { + self.machine_st.backtrack(); + } else { + self.machine_st.p = self.machine_st.cp; + } + } + _ => { + self.machine_st.backtrack(); + } + ); + } _ => { self.machine_st.backtrack(); } -- 2.54.0