diff --git a/src/buffer/slice_deque_buf.rs b/src/buffer/slice_deque_buf.rs index de4780b..af72f23 100644 --- a/src/buffer/slice_deque_buf.rs +++ b/src/buffer/slice_deque_buf.rs @@ -70,12 +70,12 @@ impl SliceDequeBuf { } pub fn consume(&mut self, amt: usize) { + let offset = cmp::min(amt, self.len()) as isize; + if offset < 0 { + panic!("BufImpl.consume() arg overflowed isize: {:x}", amt) + } unsafe { - let offset = cmp::min(amt, self.len()) as isize; - if offset < 0 { - panic!("BufImpl.consume() arg overflowed isize: {:x}", amt) - } self.deque.move_head(offset); } diff --git a/src/buffer/std_buf.rs b/src/buffer/std_buf.rs index 7e717c3..c03b9e5 100644 --- a/src/buffer/std_buf.rs +++ b/src/buffer/std_buf.rs @@ -148,8 +148,8 @@ mod impl_ { buf.reserve_exact(additional); + let new_cap = buf.capacity(); unsafe { - let new_cap = buf.capacity(); buf.set_len(new_cap); } diff --git a/src/lib.rs b/src/lib.rs index 6a5365a..00d9bf3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1038,10 +1038,10 @@ impl Buffer { let cap = self.capacity(); if self.zeroed < cap { - unsafe { - let buf = self.buf.write_buf(); + + let buf = unsafe { self.buf.write_buf() }; init_buffer(&rdr, buf); - } + self.zeroed = cap; } @@ -1064,8 +1064,8 @@ impl Buffer { /// it will fill the usable space and return the number of bytes copied. If there is no usable /// space, this returns 0. pub fn copy_from_slice(&mut self, src: &[u8]) -> usize { - let len = unsafe { - let mut buf = self.buf.write_buf(); + let len = { + let mut buf = unsafe { self.buf.write_buf() }; let len = cmp::min(buf.len(), src.len()); buf[..len].copy_from_slice(&src[..len]); len