diff --git a/src/libstd/io/buffered.rs b/src/libstd/io/buffered.rs index 95c313dd282b..6350fabb018d 100644 --- a/src/libstd/io/buffered.rs +++ b/src/libstd/io/buffered.rs @@ -118,14 +118,14 @@ impl Reader for BufferedReader { fn read(&mut self, buf: &mut [u8]) -> Option { 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) }