diff options
Diffstat (limited to '')
-rw-r--r-- | src/octets.rs | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/octets.rs b/src/octets.rs index 0a6666d9..866c7206 100644 --- a/src/octets.rs +++ b/src/octets.rs @@ -184,7 +184,7 @@ impl<'a> Octets<'a> { 1 => 2, 2 => 4, 3 => 8, - _ => return Err(Error::BufferTooShort), + _ => unreachable!(), }; if len > self.cap() { @@ -203,7 +203,7 @@ impl<'a> Octets<'a> { 2 => u64::from(b.get_u16()?), 4 => u64::from(b.get_u32()?), 8 => b.get_u64()?, - _ => return Err(Error::BufferTooShort), + _ => unreachable!(), }; Ok(out) @@ -228,8 +228,8 @@ impl<'a> Octets<'a> { let buf = self.put_u64(v)?; buf[0] |= 0xc0; } else { - return Err(Error::BufferTooShort); - }; + panic!("value is too large for varint"); + } Ok(()) } @@ -585,6 +585,14 @@ mod tests { } #[test] + #[should_panic] + fn varint_too_large() { + let mut d = [0; 3]; + let mut b = Octets::with_slice(&mut d); + assert!(b.put_varint(std::u64::MAX).is_err()); + } + + #[test] fn put_u() { let mut d = [0; 18]; |