diff options
author | Neal H. Walfield <neal@pep.foundation> | 2018-10-04 12:12:40 +0200 |
---|---|---|
committer | Neal H. Walfield <neal@pep.foundation> | 2018-10-04 12:12:40 +0200 |
commit | 86ce32cb007db22e0e04f1c7fe49eedaa0c6bf92 (patch) | |
tree | bede872d5f83d61cd9c8ff8ca075f5d830795552 | |
parent | e121bc00a9987df81ae6306ad4c94f2df37fe448 (diff) |
buffered-reader: Add an assert.
-rw-r--r-- | buffered-reader/src/lib.rs | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/buffered-reader/src/lib.rs b/buffered-reader/src/lib.rs index be34f74a..59493309 100644 --- a/buffered-reader/src/lib.rs +++ b/buffered-reader/src/lib.rs @@ -414,7 +414,7 @@ pub trait BufferedReader<C> : io::Read + fmt::Debug { let mut s = DEFAULT_BUF_SIZE; while s < std::usize::MAX { match self.data(s) { - Ok(ref buffer) => + Ok(ref buffer) => { if buffer.len() < s { // We really want to do // @@ -427,18 +427,22 @@ pub trait BufferedReader<C> : io::Read + fmt::Debug { // // Instead, we break out of the loop, and then // call self.data(s) again. This extra call - // shouldn't have any significant cost, - // because the buffer should already be - // prepared. + // won't have any significant cost, because + // the buffer is already prepared. + s = buffer.len(); break; } else { s *= 2; - }, + } + } Err(err) => return Err(err), } } - return self.data(s); + + let buffer = self.buffer(); + assert_eq!(buffer.len(), s); + return Ok(buffer); } /// Consumes some of the data. |