File tree Expand file tree Collapse file tree 2 files changed +22
-0
lines changed
Expand file tree Collapse file tree 2 files changed +22
-0
lines changed Original file line number Diff line number Diff line change @@ -712,6 +712,8 @@ impl<I: SliceIterator<Interval>> RunIter<I> {
712712 }
713713 Err ( index) => {
714714 if index == self . intervals . as_slice ( ) . len ( ) {
715+ // Consume the whole iterator
716+ self . intervals . nth ( index) ;
715717 return ;
716718 }
717719 if let Some ( value) = index. checked_sub ( 1 ) {
@@ -747,6 +749,8 @@ impl<I: SliceIterator<Interval>> RunIter<I> {
747749 }
748750 Err ( index) => {
749751 if index == 0 {
752+ // Consume the whole iterator
753+ self . intervals . nth_back ( self . intervals . as_slice ( ) . len ( ) ) ;
750754 return ;
751755 }
752756 let backward_index = self . intervals . as_slice ( ) . len ( ) - index;
Original file line number Diff line number Diff line change @@ -206,3 +206,21 @@ fn advance_bitset_back_to_start_word() {
206206 }
207207 assert_eq ! ( iter. next( ) , None ) ;
208208}
209+
210+ #[ test]
211+ fn advance_run_past_the_end ( ) {
212+ let mut bitmap = RoaringBitmap :: new ( ) ;
213+ bitmap. insert_range ( 0 ..=0x35B00 ) ;
214+ let mut iter = bitmap. iter ( ) ;
215+ iter. advance_to ( 0x35B01 ) ;
216+ assert_eq ! ( iter. next( ) , None ) ;
217+ }
218+
219+ #[ test]
220+ fn advance_run_back_before_start ( ) {
221+ let mut bitmap = RoaringBitmap :: new ( ) ;
222+ bitmap. insert_range ( 500 ..=0x35B00 ) ;
223+ let mut iter = bitmap. iter ( ) ;
224+ iter. advance_back_to ( 499 ) ;
225+ assert_eq ! ( iter. next_back( ) , None ) ;
226+ }
You can’t perform that action at this time.
0 commit comments