summaryrefslogtreecommitdiffstats
path: root/buffered-reader
diff options
context:
space:
mode:
authorNeal H. Walfield <neal@pep.foundation>2018-10-04 12:12:40 +0200
committerNeal H. Walfield <neal@pep.foundation>2018-10-04 12:12:40 +0200
commit86ce32cb007db22e0e04f1c7fe49eedaa0c6bf92 (patch)
treebede872d5f83d61cd9c8ff8ca075f5d830795552 /buffered-reader
parente121bc00a9987df81ae6306ad4c94f2df37fe448 (diff)
buffered-reader: Add an assert.
Diffstat (limited to 'buffered-reader')
-rw-r--r--buffered-reader/src/lib.rs16
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.