From 7c113302decdfdef07a2f6cc0e4a67151ec1f66f Mon Sep 17 00:00:00 2001 From: KAMADA Ken'ichi Date: Sun, 6 Sep 2020 15:23:36 +0900 Subject: [PATCH] ErrorKind::Interrupted should be handled by discard_exact. --- src/util.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/util.rs b/src/util.rs index f9f18e0..e5dd0e4 100644 --- a/src/util.rs +++ b/src/util.rs @@ -55,7 +55,11 @@ pub trait BufReadExt { impl BufReadExt for T where T: io::BufRead { fn discard_exact(&mut self, mut len: usize) -> io::Result<()> { while len > 0 { - let consume_len = self.fill_buf()?.len().min(len); + let consume_len = match self.fill_buf() { + Ok(buf) => buf.len().min(len), + Err(e) if e.kind() == io::ErrorKind::Interrupted => continue, + Err(e) => return Err(e), + }; self.consume(consume_len); len -= consume_len; }