summaryrefslogtreecommitdiffstats
path: root/buffered-reader
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2019-03-01 10:38:17 +0100
committerJustus Winter <justus@sequoia-pgp.org>2019-03-01 10:38:17 +0100
commitab7d4ce33bdf44855c7295e870ced2fac17f62e4 (patch)
tree36020c99b2c9f34c4bc8e54c532e3335a90a1511 /buffered-reader
parenta2b92270fd1cfc69a73fb83c81ad0f6ccf2c731f (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')
-rw-r--r--buffered-reader/src/eof.rs12
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>>