correct peek_byte/2 bugs (#1882)
This commit is contained in:
@@ -1268,12 +1268,9 @@ impl Stream {
|
||||
}
|
||||
}
|
||||
Stream::InputFile(ref mut file) => {
|
||||
let mut b = [0u8; 1];
|
||||
|
||||
match file.read(&mut b)? {
|
||||
1 => {
|
||||
file.stream.get_mut().file.seek(SeekFrom::Current(-1))?;
|
||||
Ok(b[0])
|
||||
match file.peek_byte() {
|
||||
Some(result) => {
|
||||
Ok(result?)
|
||||
}
|
||||
_ => Err(std::io::Error::new(
|
||||
ErrorKind::UnexpectedEof,
|
||||
|
||||
@@ -2444,7 +2444,11 @@ impl Machine {
|
||||
addr,
|
||||
);
|
||||
|
||||
return Ok(());
|
||||
if !self.machine_st.fail {
|
||||
return Ok(());
|
||||
} else {
|
||||
self.machine_st.fail = false;
|
||||
}
|
||||
}
|
||||
|
||||
let addr = match addr {
|
||||
|
||||
@@ -128,6 +128,19 @@ impl<R: Read> CharReader<R> {
|
||||
|
||||
Ok(&self.buf[self.pos..])
|
||||
}
|
||||
|
||||
pub fn peek_byte(&mut self) -> Option<io::Result<u8>> {
|
||||
match self.refresh_buffer() {
|
||||
Ok(_buf) => {}
|
||||
Err(e) => return Some(Err(e)),
|
||||
}
|
||||
|
||||
return if let Some(b) = self.buf.get(0).cloned() {
|
||||
Some(Ok(b))
|
||||
} else {
|
||||
None
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
impl<R: Read> CharRead for CharReader<R> {
|
||||
|
||||
Reference in New Issue
Block a user