@@ -853,11 +853,16 @@ impl<T> RawIterRange<T> {
853
853
///
854
854
/// The start offset must be aligned to the group width.
855
855
#[ 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 > {
857
861
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) ;
861
866
let current_group = Group :: load_aligned ( ctrl) . match_empty_or_deleted ( ) . invert ( ) ;
862
867
RawIterRange {
863
868
data,
@@ -881,7 +886,10 @@ impl<T> RawIterRange<T> {
881
886
debug_assert_eq ! ( len % ( Group :: WIDTH * 2 ) , 0 ) ;
882
887
let mid = len / 2 ;
883
888
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) ;
884
891
self . end = self . ctrl . add ( mid) ;
892
+ debug_assert_eq ! ( self . end, tail. ctrl) ;
885
893
( self , Some ( tail) )
886
894
}
887
895
}
0 commit comments