From: Mark Date: Thu, 13 Jul 2023 19:37:34 +0000 (-0600) Subject: correct peek_code/2, don't set stream position in peek functions X-Git-Tag: v0.9.2~60 X-Git-Url: https://git.sagredo.dev/?a=commitdiff_plain;h=4163cb038d83045b020ef036865fe11f3c282456;p=scryer-prolog.git correct peek_code/2, don't set stream position in peek functions --- diff --git a/src/machine/system_calls.rs b/src/machine/system_calls.rs index ba67067d..4a4965a2 100644 --- a/src/machine/system_calls.rs +++ b/src/machine/system_calls.rs @@ -2437,17 +2437,15 @@ impl Machine { let addr = self.deref_register(2); if stream.at_end_of_stream() { - stream.set_past_end_of_stream(true); - self.machine_st.unify_fixnum( Fixnum::build_with(-1), addr, ); - if !self.machine_st.fail { - return Ok(()); - } else { + if self.machine_st.fail { self.machine_st.fail = false; + } else { + return Ok(()); } } @@ -2538,7 +2536,6 @@ impl Machine { if stream.at_end_of_stream() { let end_of_file = atom!("end_of_file"); - stream.set_past_end_of_stream(true); self.machine_st.unify_atom( end_of_file, @@ -2634,15 +2631,16 @@ impl Machine { let a2 = self.deref_register(2); if stream.at_end_of_stream() { - let end_of_file = atom!("end_of_file"); - stream.set_past_end_of_stream(true); - - self.machine_st.unify_atom( - end_of_file, + self.machine_st.unify_fixnum( + Fixnum::build_with(-1), a2, ); - return Ok(()); + if self.machine_st.fail { + self.machine_st.fail = false; + } else { + return Ok(()); + } } let addr = read_heap_cell!(a2,