Fix regression in Bytes::truncate (#333)

When the length to truncate is greater than the buffer's current
length, do nothing instead of clearing the contents.
This commit is contained in:
Mikhail Zabaluev
2019-12-02 00:00:42 +02:00
committed by Carl Lerche
parent 5012a86462
commit bad4e1b3ab
2 changed files with 13 additions and 3 deletions
+1 -3
View File
@@ -373,9 +373,7 @@ impl Bytes {
/// [`split_off`]: #method.split_off
#[inline]
pub fn truncate(&mut self, len: usize) {
if len >= self.len {
self.len = 0;
} else {
if len < self.len {
self.len = len;
}
}
+12
View File
@@ -312,6 +312,18 @@ fn split_off_to_at_gt_len() {
}).is_err());
}
#[test]
fn truncate() {
let s = &b"helloworld"[..];
let mut hello = Bytes::from(s);
hello.truncate(15);
assert_eq!(hello, s);
hello.truncate(10);
assert_eq!(hello, s);
hello.truncate(5);
assert_eq!(hello, "hello");
}
#[test]
fn freeze_clone_shared() {
let s = &b"abcdefgh"[..];