@@ -853,11 +853,16 @@ impl<T> RawIterRange<T> {
853853 ///
854854 /// The start offset must be aligned to the group width.
855855 #[ inline]
856- unsafe fn new ( ctrl : * const u8 , data : * const T , range : Range < usize > ) -> RawIterRange < T > {
856+ unsafe fn new (
857+ input_ctrl : * const u8 ,
858+ input_data : * const T ,
859+ range : Range < usize > ,
860+ ) -> RawIterRange < T > {
857861 debug_assert_eq ! ( range. start % Group :: WIDTH , 0 ) ;
858- let ctrl = ctrl. add ( range. start ) ;
859- let data = data. add ( range. start ) ;
860- let end = ctrl. add ( range. end ) ;
862+ let ctrl = input_ctrl. add ( range. start ) ;
863+ let data = input_data. add ( range. start ) ;
864+ let end = input_ctrl. add ( range. end ) ;
865+ debug_assert_eq ! ( offset_from( end, ctrl) , range. end - range. start) ;
861866 let current_group = Group :: load_aligned ( ctrl) . match_empty_or_deleted ( ) . invert ( ) ;
862867 RawIterRange {
863868 data,
@@ -881,7 +886,10 @@ impl<T> RawIterRange<T> {
881886 debug_assert_eq ! ( len % ( Group :: WIDTH * 2 ) , 0 ) ;
882887 let mid = len / 2 ;
883888 let tail = RawIterRange :: new ( self . ctrl , self . data , mid..len) ;
889+ debug_assert_eq ! ( self . data. add( mid) , tail. data) ;
890+ debug_assert_eq ! ( self . end, tail. end) ;
884891 self . end = self . ctrl . add ( mid) ;
892+ debug_assert_eq ! ( self . end, tail. ctrl) ;
885893 ( self , Some ( tail) )
886894 }
887895 }
0 commit comments