mirror of
https://github.com/tokio-rs/bytes.git
synced 2026-08-07 00:00:13 +02:00
Don't set len in BytesMut::reserve (#682)
A fundamental invariant of `reserve` is that it can extend capacity while the stored data remains the same, even if it's moved to a new allocation. As a result, `len` can never change during a call to `reserve`.
This commit is contained in:
+2
-2
@@ -639,8 +639,8 @@ impl BytesMut {
|
|||||||
|
|
||||||
// Update the info
|
// Update the info
|
||||||
self.ptr = vptr(v.as_mut_ptr().add(off));
|
self.ptr = vptr(v.as_mut_ptr().add(off));
|
||||||
self.len = v.len() - off;
|
|
||||||
self.cap = v.capacity() - off;
|
self.cap = v.capacity() - off;
|
||||||
|
debug_assert_eq!(self.len, v.len() - off);
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -746,8 +746,8 @@ impl BytesMut {
|
|||||||
let data = (original_capacity_repr << ORIGINAL_CAPACITY_OFFSET) | KIND_VEC;
|
let data = (original_capacity_repr << ORIGINAL_CAPACITY_OFFSET) | KIND_VEC;
|
||||||
self.data = invalid_ptr(data);
|
self.data = invalid_ptr(data);
|
||||||
self.ptr = vptr(v.as_mut_ptr());
|
self.ptr = vptr(v.as_mut_ptr());
|
||||||
self.len = v.len();
|
|
||||||
self.cap = v.capacity();
|
self.cap = v.capacity();
|
||||||
|
debug_assert_eq!(self.len, v.len());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Appends given bytes to this `BytesMut`.
|
/// Appends given bytes to this `BytesMut`.
|
||||||
|
|||||||
Reference in New Issue
Block a user