diff --git a/src/message.rs b/src/message.rs index 6b9577ce..e1018321 100644 --- a/src/message.rs +++ b/src/message.rs @@ -356,8 +356,9 @@ fn read_data_row(buf: &mut R) -> io::Result { let val = match try!(buf.read_i32::()) { -1 => None, len => { - let mut data = vec![]; - try!(buf.take(len as u64).read_to_end(&mut data)); + let mut data = Vec::with_capacity(len as usize); + data.extend((0..len).map(|_| 0)); + try!(util::read_all(buf, &mut data)); Some(data) } };