]> Repositorios git - scryer-prolog.git/commitdiff
treat Utf8Error::valid_up_to as an offset form self.pos, which it is (#2374)
authorMark Thom <[email protected]>
Wed, 3 Apr 2024 21:29:29 +0000 (15:29 -0600)
committerMark Thom <[email protected]>
Wed, 3 Apr 2024 21:29:29 +0000 (15:29 -0600)
src/parser/char_reader.rs

index 9febf0fddd1b373f87e369b0c3a8fbe646fb5ef5..a6dd75db46b3a10a76f08cc0aa59af74d2a1d0c4 100644 (file)
@@ -192,7 +192,7 @@ impl<R: Read> CharRead for CharReader<R> {
                 } else if self.pos >= self.buf.len() {
                     return None;
                 } else if self.buf.len() - self.pos >= 4 && self.pos < e.valid_up_to() {
-                    return match str::from_utf8(&self.buf[self.pos..e.valid_up_to()]) {
+                    return match str::from_utf8(&self.buf[self.pos..self.pos + e.valid_up_to()]) {
                         Ok(s) => {
                             let mut chars = s.chars();
                             let c = chars.next().unwrap();
@@ -200,7 +200,7 @@ impl<R: Read> CharRead for CharReader<R> {
                             Some(Ok(c))
                         }
                         Err(e) => {
-                            let badbytes = self.buf[self.pos..e.valid_up_to()].to_vec();
+                            let badbytes = self.buf[self.pos..self.pos + e.valid_up_to()].to_vec();
 
                             Some(Err(io::Error::new(
                                 io::ErrorKind::InvalidData,