Skip to content

Commit cab6878

Browse files
committed
Make BufferedReader propagate 0-byte long reads.
Could prevent callers from catching the situation and lead to e.g early iterator terminations (cf. `Reader::read_byte') since `None' is only to be returned only on EOF.
1 parent 8d52dfb commit cab6878

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/libstd/io/buffered.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -118,14 +118,14 @@ impl<R: Reader> Reader for BufferedReader<R> {
118118
fn read(&mut self, buf: &mut [u8]) -> Option<uint> {
119119
let nread = {
120120
let available = self.fill();
121-
if available.len() == 0 {
122-
return None;
123-
}
124121
let nread = num::min(available.len(), buf.len());
125122
vec::bytes::copy_memory(buf, available.slice_to(nread));
126123
nread
127124
};
128125
self.pos += nread;
126+
if nread == 0 && self.inner.eof() && buf.len() != 0 {
127+
return None;
128+
}
129129
Some(nread)
130130
}
131131

0 commit comments

Comments
 (0)