diff options
-rw-r--r-- | src/bytes.rs | 43 | ||||
-rw-r--r-- | src/bytes_mut.rs | 27 |
2 files changed, 57 insertions, 13 deletions
diff --git a/src/bytes.rs b/src/bytes.rs index 48405d8..9e4dd91 100644 --- a/src/bytes.rs +++ b/src/bytes.rs @@ -209,8 +209,18 @@ impl Bytes { Bound::Unbounded => len, }; - assert!(begin <= end); - assert!(end <= len); + assert!( + begin <= end, + "range start must not be greater than end: {:?} <= {:?}", + begin, + end, + ); + assert!( + end <= len, + "range end out of bounds: {:?} <= {:?}", + end, + len, + ); if end == begin { return Bytes::new(); @@ -302,7 +312,12 @@ impl Bytes { /// Panics if `at > len`. #[must_use = "consider Bytes::truncate if you don't need the other half"] pub fn split_off(&mut self, at: usize) -> Bytes { - assert!(at <= self.len()); + assert!( + at <= self.len(), + "split_off out of bounds: {:?} <= {:?}", + at, + self.len(), + ); if at == self.len() { return Bytes::new(); @@ -346,7 +361,12 @@ impl Bytes { /// Panics if `at > len`. #[must_use = "consider Bytes::advance if you don't need the other half"] pub fn split_to(&mut self, at: usize) -> Bytes { - assert!(at <= self.len()); + assert!( + at <= self.len(), + "split_to out of bounds: {:?} <= {:?}", + at, + self.len(), + ); if at == self.len() { return mem::replace(self, Bytes::new()); @@ -430,7 +450,7 @@ impl Bytes { #[inline] unsafe fn inc_start(&mut self, by: usize) { // should already be asserted, but debug assert for tests - debug_assert!(self.len >= by); + debug_assert!(self.len >= by, "internal: inc_start out of bounds"); self.len -= by; self.ptr = self.ptr.offset(by as isize); } @@ -477,7 +497,13 @@ impl Buf for Bytes { #[inline] fn advance(&mut self, cnt: usize) { - assert!(cnt <= self.len(), "cannot advance past `remaining`"); + assert!( + cnt <= self.len(), + "cannot advance past `remaining`: {:?} <= {:?}", + cnt, + self.len(), + ); + unsafe { self.inc_start(cnt); } @@ -921,7 +947,10 @@ unsafe fn shallow_clone_vec(atom: &AtomicPtr<()>, ptr: *const (), buf: *mut u8, // The pointer should be aligned, so this assert should // always succeed. - debug_assert!(0 == (shared as usize & KIND_MASK)); + debug_assert!( + 0 == (shared as usize & KIND_MASK), + "internal: Box<Shared> should have an aligned pointer", + ); // Try compare & swapping the pointer into the `arc` field. // `Release` is used synchronize with other threads that diff --git a/src/bytes_mut.rs b/src/bytes_mut.rs index 8579f8c..1059454 100644 --- a/src/bytes_mut.rs +++ b/src/bytes_mut.rs @@ -277,7 +277,12 @@ impl BytesMut { /// Panics if `at > capacity`. #[must_use = "consider BytesMut::truncate if you don't need the other half"] pub fn split_off(&mut self, at: usize) -> BytesMut { - assert!(at <= self.capacity()); + assert!( + at <= self.capacity(), + "split_off out of bounds: {:?} <= {:?}", + at, + self.capacity(), + ); unsafe { let mut other = self.shallow_clone(); other.set_start(at); @@ -345,7 +350,12 @@ impl BytesMut { /// Panics if `at > len`. #[must_use = "consider BytesMut::advance if you don't need the other half"] pub fn split_to(&mut self, at: usize) -> BytesMut { - assert!(at <= self.len()); + assert!( + at <= self.len(), + "split_to out of bounds: {:?} <= {:?}", + at, + self.len(), + ); unsafe { let mut other = self.shallow_clone(); @@ -459,7 +469,7 @@ impl BytesMut { /// assert_eq!(&b[..], b"hello world"); /// ``` pub unsafe fn set_len(&mut self, len: usize) { - debug_assert!(len <= self.cap); + debug_assert!(len <= self.cap, "set_len out of bounds"); self.len = len; } @@ -755,7 +765,7 @@ impl BytesMut { return; } - debug_assert!(start <= self.cap); + debug_assert!(start <= self.cap, "internal: set_start out of bounds"); let kind = self.kind(); @@ -794,7 +804,7 @@ impl BytesMut { unsafe fn set_end(&mut self, end: usize) { debug_assert_eq!(self.kind(), KIND_ARC); - assert!(end <= self.cap); + assert!(end <= self.cap, "set_end out of bounds"); self.cap = end; self.len = cmp::min(self.len, end); @@ -932,7 +942,12 @@ impl Buf for BytesMut { #[inline] fn advance(&mut self, cnt: usize) { - assert!(cnt <= self.remaining(), "cannot advance past `remaining`"); + assert!( + cnt <= self.remaining(), + "cannot advance past `remaining`: {:?} <= {:?}", + cnt, + self.remaining(), + ); unsafe { self.set_start(cnt); } } |