call read_bytes iteratively inside of read_vec (#138)
This commit is contained in:
parent
05d1936caf
commit
ed65f9abeb
|
|
@ -58,14 +58,13 @@ impl<R: Read, E: ByteOrder> Deserializer<R, E> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn read_vec(&mut self) -> Result<Vec<u8>> {
|
fn read_vec(&mut self) -> Result<Vec<u8>> {
|
||||||
let len = try!(serde::Deserialize::deserialize(&mut *self));
|
let mut len: usize = try!(serde::Deserialize::deserialize(&mut *self));
|
||||||
try!(self.read_bytes(len));
|
|
||||||
|
|
||||||
let mut result = Vec::new();
|
let mut result = Vec::new();
|
||||||
let mut len = len as usize;
|
|
||||||
let mut off = 0;
|
let mut off = 0;
|
||||||
while len > 0 {
|
while len > 0 {
|
||||||
let reserve = cmp::min(len, BLOCK_SIZE);
|
let reserve = cmp::min(len, BLOCK_SIZE);
|
||||||
|
try!(self.read_bytes(reserve as u64));
|
||||||
unsafe {
|
unsafe {
|
||||||
result.reserve(reserve);
|
result.reserve(reserve);
|
||||||
result.set_len(off + reserve);
|
result.set_len(off + reserve);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue