diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2020-03-25 15:19:42 +0100 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2020-03-25 15:19:42 +0100 |
commit | bfd7e05a5103b48da92a38c80128d38891af984b (patch) | |
tree | 4d664c8f5f7c8f30fa7fb3901eef9dfe168dcc04 /buffered-reader | |
parent | 90e8dc67395797b67d51f1b23f4b74f84de0fef2 (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.rs | 19 |
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; } } |