@@ -257,8 +257,20 @@ impl Bytes {
257
257
let sub_p = subset. as_ptr ( ) as usize ;
258
258
let sub_len = subset. len ( ) ;
259
259
260
- assert ! ( sub_p >= bytes_p) ;
261
- assert ! ( sub_p + sub_len <= bytes_p + bytes_len) ;
260
+ assert ! (
261
+ sub_p >= bytes_p,
262
+ "subset pointer ({:p}) is smaller than self pointer ({:p})" ,
263
+ sub_p as * const u8 ,
264
+ bytes_p as * const u8 ,
265
+ ) ;
266
+ assert ! (
267
+ sub_p + sub_len <= bytes_p + bytes_len,
268
+ "subset is out of bounds: self = ({:p}, {}), subset = ({:p}, {})" ,
269
+ bytes_p as * const u8 ,
270
+ bytes_len,
271
+ sub_p as * const u8 ,
272
+ sub_len,
273
+ ) ;
262
274
263
275
let sub_offset = sub_p - bytes_p;
264
276
@@ -719,6 +731,12 @@ impl From<Vec<u8>> for Bytes {
719
731
let slice = vec. into_boxed_slice ( ) ;
720
732
let len = slice. len ( ) ;
721
733
let ptr = slice. as_ptr ( ) ;
734
+
735
+ assert ! (
736
+ ptr as usize & KIND_VEC == 0 ,
737
+ "Vec pointer should not have LSB set: {:p}" ,
738
+ ptr,
739
+ ) ;
722
740
drop ( Box :: into_raw ( slice) ) ;
723
741
724
742
let data = ptr as usize | KIND_VEC ;
@@ -808,7 +826,15 @@ unsafe fn shared_drop(data: &mut AtomicPtr<()>, ptr: *const u8, len: usize) {
808
826
}
809
827
810
828
unsafe fn rebuild_vec ( shared : * const ( ) , offset : * const u8 , len : usize ) -> Vec < u8 > {
811
- debug_assert_eq ! ( shared as usize & KIND_MASK , KIND_VEC ) ;
829
+ debug_assert ! (
830
+ shared as usize & KIND_MASK == KIND_VEC ,
831
+ "rebuild_vec should have beeen called with KIND_VEC" ,
832
+ ) ;
833
+ debug_assert ! (
834
+ shared as usize & !KIND_MASK != 0 ,
835
+ "rebuild_vec should be called with non-null pointer: {:p}" ,
836
+ shared,
837
+ ) ;
812
838
813
839
let buf = ( shared as usize & !KIND_MASK ) as * mut u8 ;
814
840
let cap = ( offset as usize - buf as usize ) + len;
0 commit comments