From cab687853a63198e5de9aa094d4ac01d068d0285 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Paolacci?= Date: Mon, 16 Dec 2013 19:11:17 +0100 Subject: [PATCH] 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. --- src/libstd/io/buffered.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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) }