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.
This commit is contained in:
Sébastien Paolacci 2013-12-16 19:11:17 +01:00
parent 8d52dfbace
commit cab687853a

View file

@ -118,14 +118,14 @@ impl<R: Reader> Reader for BufferedReader<R> {
fn read(&mut self, buf: &mut [u8]) -> Option<uint> {
let nread = {
let available = self.fill();
if available.len() == 0 {
return None;
}
let nread = num::min(available.len(), buf.len());
vec::bytes::copy_memory(buf, available.slice_to(nread));
nread
};
self.pos += nread;
if nread == 0 && self.inner.eof() && buf.len() != 0 {
return None;
}
Some(nread)
}