summaryrefslogtreecommitdiffstats
path: root/buffered-reader
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2020-03-25 15:19:42 +0100
committerJustus Winter <justus@sequoia-pgp.org>2020-03-25 15:19:42 +0100
commitbfd7e05a5103b48da92a38c80128d38891af984b (patch)
tree4d664c8f5f7c8f30fa7fb3901eef9dfe168dcc04 /buffered-reader
parent90e8dc67395797b67d51f1b23f4b74f84de0fef2 (diff)
buffered-reader: Improve performance of BufferedReader::drop_eof.
- Consume the whole buffer, not just DEFAULT_BUF_SIZE.
Diffstat (limited to 'buffered-reader')
-rw-r--r--buffered-reader/src/lib.rs19
1 files changed, 6 insertions, 13 deletions
diff --git a/buffered-reader/src/lib.rs b/buffered-reader/src/lib.rs
index ea838e11..04429967 100644
--- a/buffered-reader/src/lib.rs
+++ b/buffered-reader/src/lib.rs
@@ -799,19 +799,12 @@ pub trait BufferedReader<C> : io::Read + fmt::Debug + fmt::Display {
fn drop_eof(&mut self) -> Result<bool, std::io::Error> {
let mut at_least_one_byte = false;
loop {
- match self.data_consume(DEFAULT_BUF_SIZE) {
- Ok(ref buffer) => {
- if buffer.len() > 0 {
- at_least_one_byte = true;
- }
-
- if buffer.len() < DEFAULT_BUF_SIZE {
- // EOF.
- break;
- }
- }
- Err(err) =>
- return Err(err),
+ let n = self.data(DEFAULT_BUF_SIZE)?.len();
+ at_least_one_byte |= n > 0;
+ self.consume(n);
+ if n < DEFAULT_BUF_SIZE {
+ // EOF.
+ break;
}
}