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:
parent
8d52dfbace
commit
cab687853a
1 changed files with 3 additions and 3 deletions
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue