diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2019-03-01 10:38:17 +0100 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2019-03-01 10:38:17 +0100 |
commit | ab7d4ce33bdf44855c7295e870ced2fac17f62e4 (patch) | |
tree | 36020c99b2c9f34c4bc8e54c532e3335a90a1511 /buffered-reader/src | |
parent | a2b92270fd1cfc69a73fb83c81ad0f6ccf2c731f (diff) |
buffered-reader: Fix BufferedReaderEOF.
- According to the BufferedReader interface it is okay to return
short reads on `BufferedReader::data_consume()`.
- If `BufferedReader::data_consume_hard()` is called, return
UnexpectedEof instead of panicking.
- Fixes #207.
Diffstat (limited to 'buffered-reader/src')
-rw-r--r-- | buffered-reader/src/eof.rs | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/buffered-reader/src/eof.rs b/buffered-reader/src/eof.rs index 424e2245..510dc2df 100644 --- a/buffered-reader/src/eof.rs +++ b/buffered-reader/src/eof.rs @@ -1,5 +1,5 @@ use std::io; -use std::io::Read; +use std::io::{Error, ErrorKind, Read}; use std::fmt; use BufferedReader; @@ -60,14 +60,16 @@ impl<C> BufferedReader<C> for BufferedReaderEOF<C> { return &b""[..]; } - fn data_consume(&mut self, amount: usize) -> Result<&[u8], io::Error> { - assert_eq!(amount, 0); + fn data_consume(&mut self, _amount: usize) -> Result<&[u8], io::Error> { return Ok(&b""[..]); } fn data_consume_hard(&mut self, amount: usize) -> Result<&[u8], io::Error> { - assert_eq!(amount, 0); - return Ok(&b""[..]); + if amount == 0 { + Ok(&b""[..]) + } else { + Err(Error::new(ErrorKind::UnexpectedEof, "unexpected EOF")) + } } fn into_inner<'a>(self: Box<Self>) -> Option<Box<BufferedReader<C> + 'a>> |