core: panic on overflow in BorrowedCursor
This commit is contained in:
parent
05ccc49a44
commit
91fe6f9343
2 changed files with 12 additions and 2 deletions
|
@ -249,9 +249,10 @@ impl<'a> BorrowedCursor<'a> {
|
||||||
/// Panics if there are less than `n` bytes initialized.
|
/// Panics if there are less than `n` bytes initialized.
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn advance(&mut self, n: usize) -> &mut Self {
|
pub fn advance(&mut self, n: usize) -> &mut Self {
|
||||||
assert!(self.buf.init >= self.buf.filled + n);
|
let filled = self.buf.filled.strict_add(n);
|
||||||
|
assert!(filled <= self.buf.init);
|
||||||
|
|
||||||
self.buf.filled += n;
|
self.buf.filled = filled;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -209,6 +209,15 @@ fn read_buf_exact() {
|
||||||
assert_eq!(c.read_buf_exact(buf.unfilled()).unwrap_err().kind(), io::ErrorKind::UnexpectedEof);
|
assert_eq!(c.read_buf_exact(buf.unfilled()).unwrap_err().kind(), io::ErrorKind::UnexpectedEof);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[should_panic]
|
||||||
|
fn borrowed_cursor_advance_overflow() {
|
||||||
|
let mut buf = [0; 512];
|
||||||
|
let mut buf = BorrowedBuf::from(&mut buf[..]);
|
||||||
|
buf.unfilled().advance(1);
|
||||||
|
buf.unfilled().advance(usize::MAX);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn take_eof() {
|
fn take_eof() {
|
||||||
struct R;
|
struct R;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue