From 3a18e72be67152834f6967c6d208f214288178ee Mon Sep 17 00:00:00 2001 From: Sean McArthur Date: Mon, 4 Jan 2016 15:00:37 -0800 Subject: [PATCH] fix(buffer): fix incorrect resizing of BufReader Closes #715 --- src/buffer.rs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/buffer.rs b/src/buffer.rs index f405591e0c..b016877a84 100644 --- a/src/buffer.rs +++ b/src/buffer.rs @@ -79,7 +79,7 @@ unsafe fn grow_zerofill(buf: &mut Vec, additional: usize) { use std::ptr; let len = buf.len(); buf.set_len(len + additional); - ptr::write_bytes(buf.as_mut_ptr(), 0, buf.len()); + ptr::write_bytes(buf.as_mut_ptr().offset(len as isize), 0, buf.len()); } impl Read for BufReader { @@ -151,4 +151,14 @@ mod tests { assert_eq!(rdr.pos, 0); assert_eq!(rdr.cap, 0); } + + #[test] + fn test_resize() { + let raw = b"hello world"; + let mut rdr = BufReader::with_capacity(&raw[..], 5); + rdr.read_into_buf().unwrap(); + assert_eq!(rdr.get_buf(), b"hello"); + rdr.read_into_buf().unwrap(); + assert_eq!(rdr.get_buf(), b"hello world"); + } }