add stream alias check to atom/1 (#1855)
This commit is contained in:
@@ -2376,6 +2376,20 @@ impl Machine {
|
|||||||
(HeapCellValueTag::Char) => {
|
(HeapCellValueTag::Char) => {
|
||||||
self.machine_st.p += 1;
|
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();
|
self.machine_st.backtrack();
|
||||||
}
|
}
|
||||||
@@ -2405,6 +2419,20 @@ impl Machine {
|
|||||||
(HeapCellValueTag::Char) => {
|
(HeapCellValueTag::Char) => {
|
||||||
self.machine_st.p = self.machine_st.cp;
|
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();
|
self.machine_st.backtrack();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user