diff options
author | Justus Winter <justus@sequoia-pgp.org> | 2019-04-02 13:42:36 +0200 |
---|---|---|
committer | Justus Winter <justus@sequoia-pgp.org> | 2019-04-02 13:46:35 +0200 |
commit | e2acedd9dab268f288c45ba6b44129fa635f1c2b (patch) | |
tree | d46b44ee6fce29e927bd31192a5720665cc8b80c /buffered-reader | |
parent | 53cfb8e582b4d79bd4b6ecd64e2de379efbaa0c4 (diff) |
buffered-reader: Fix limit computation.
- Previously, if the underlying reader returned less data than
'amount', the limit would still be reduced by 'amount'.
Diffstat (limited to 'buffered-reader')
-rw-r--r-- | buffered-reader/src/limitor.rs | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/buffered-reader/src/limitor.rs b/buffered-reader/src/limitor.rs index e7e84d29..78fcd34a 100644 --- a/buffered-reader/src/limitor.rs +++ b/buffered-reader/src/limitor.rs @@ -98,6 +98,7 @@ impl<'a, C> BufferedReader<C> for Limitor<'a, C> { let amount = cmp::min(amount as u64, self.limit) as usize; let result = self.reader.data_consume(amount); if let Ok(ref buffer) = result { + let amount = cmp::min(amount, buffer.len()); self.limit -= amount as u64; return Ok(&buffer[ ..cmp::min(buffer.len() as u64, self.limit + amount as u64) as usize]); @@ -111,6 +112,7 @@ impl<'a, C> BufferedReader<C> for Limitor<'a, C> { } let result = self.reader.data_consume_hard(amount); if let Ok(ref buffer) = result { + let amount = cmp::min(amount, buffer.len()); self.limit -= amount as u64; return Ok(&buffer[ ..cmp::min(buffer.len() as u64, self.limit + amount as u64) as usize]); |