diff --git a/src/serde/reader.rs b/src/serde/reader.rs index 7c1c545..145c4c4 100644 --- a/src/serde/reader.rs +++ b/src/serde/reader.rs @@ -58,14 +58,13 @@ impl Deserializer { } fn read_vec(&mut self) -> Result> { - let len = try!(serde::Deserialize::deserialize(&mut *self)); - try!(self.read_bytes(len)); + let mut len: usize = try!(serde::Deserialize::deserialize(&mut *self)); let mut result = Vec::new(); - let mut len = len as usize; let mut off = 0; while len > 0 { let reserve = cmp::min(len, BLOCK_SIZE); + try!(self.read_bytes(reserve as u64)); unsafe { result.reserve(reserve); result.set_len(off + reserve);