ensure that RangeMap panics on OOB
This commit is contained in:
parent
421f92bee6
commit
d6cbe5d014
@ -77,6 +77,10 @@ pub fn iter(&self, offset: Size, len: Size) -> impl Iterator<Item = (Size, &T)>
|
||||
};
|
||||
// The first offset that is not included any more.
|
||||
let end = offset + len;
|
||||
assert!(
|
||||
end <= self.v.last().unwrap().range.end,
|
||||
"iterating beyond the bounds of this RangeMap"
|
||||
);
|
||||
slice
|
||||
.iter()
|
||||
.take_while(move |elem| elem.range.start < end)
|
||||
@ -279,4 +283,18 @@ fn gaps() {
|
||||
assert_eq!(map.v.len(), 5);
|
||||
assert_eq!(to_vec(&map, 10, 10), vec![23, 42, 23, 23, 23, 19, 19, 19, 19, 19]);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn out_of_range_iter_mut() {
|
||||
let mut map = RangeMap::<i32>::new(Size::from_bytes(20), -1);
|
||||
let _ = map.iter_mut(Size::from_bytes(11), Size::from_bytes(11));
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn out_of_range_iter() {
|
||||
let map = RangeMap::<i32>::new(Size::from_bytes(20), -1);
|
||||
let _ = map.iter(Size::from_bytes(11), Size::from_bytes(11));
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user