Skip to content

Commit d6cbe5d

Browse files
committed
ensure that RangeMap panics on OOB
1 parent 421f92b commit d6cbe5d

File tree

1 file changed

+18
-0
lines changed

1 file changed

+18
-0
lines changed

src/range_map.rs

+18
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ impl<T> RangeMap<T> {
7777
};
7878
// The first offset that is not included any more.
7979
let end = offset + len;
80+
assert!(
81+
end <= self.v.last().unwrap().range.end,
82+
"iterating beyond the bounds of this RangeMap"
83+
);
8084
slice
8185
.iter()
8286
.take_while(move |elem| elem.range.start < end)
@@ -279,4 +283,18 @@ mod tests {
279283
assert_eq!(map.v.len(), 5);
280284
assert_eq!(to_vec(&map, 10, 10), vec![23, 42, 23, 23, 23, 19, 19, 19, 19, 19]);
281285
}
286+
287+
#[test]
288+
#[should_panic]
289+
fn out_of_range_iter_mut() {
290+
let mut map = RangeMap::<i32>::new(Size::from_bytes(20), -1);
291+
let _ = map.iter_mut(Size::from_bytes(11), Size::from_bytes(11));
292+
}
293+
294+
#[test]
295+
#[should_panic]
296+
fn out_of_range_iter() {
297+
let map = RangeMap::<i32>::new(Size::from_bytes(20), -1);
298+
let _ = map.iter(Size::from_bytes(11), Size::from_bytes(11));
299+
}
282300
}

0 commit comments

Comments
 (0)