From 578be4ae214c16447a5dfcaa2e26fdcb70c6c62a Mon Sep 17 00:00:00 2001 From: Brian Vincent Date: Sun, 12 Jun 2016 00:33:02 -0500 Subject: [PATCH] Don't leave Decoder in invalid state if read fails If a read fails, such as in the case of non-blocking IO, we don't want to leave the Decoder in an invalid state. Only change the state of the Decoder if a read succeeds, otherwise, allow for calling again. --- src/decoder.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/decoder.rs b/src/decoder.rs index f187b11e7..c1cacc0fd 100644 --- a/src/decoder.rs +++ b/src/decoder.rs @@ -58,7 +58,6 @@ impl Read for Decoder { let mut dst_offset: usize = 0; while dst_offset == 0 { if self.pos >= self.len { - self.pos = 0; let need = match self.buf.len() < self.next { true => self.buf.len(), false => self.next, @@ -67,6 +66,7 @@ impl Read for Decoder { if self.len <= 0 { break; } + self.pos = 0; self.next -= self.len; } while (dst_offset < buf.len()) && (self.pos < self.len) {