Skip to content

Commit

Permalink
Don't set len in BytesMut::reserve (#682)
Browse files Browse the repository at this point in the history
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`.
  • Loading branch information
braddunbar authored Apr 9, 2024
1 parent 0d4cc7f commit e4af486
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/bytes_mut.rs
Original file line number Diff line number Diff line change
Expand Up @@ -639,8 +639,8 @@ impl BytesMut {

// Update the info
self.ptr = vptr(v.as_mut_ptr().add(off));
self.len = v.len() - off;
self.cap = v.capacity() - off;
debug_assert_eq!(self.len, v.len() - off);
}

return;
Expand Down Expand Up @@ -746,8 +746,8 @@ impl BytesMut {
let data = (original_capacity_repr << ORIGINAL_CAPACITY_OFFSET) | KIND_VEC;
self.data = invalid_ptr(data);
self.ptr = vptr(v.as_mut_ptr());
self.len = v.len();
self.cap = v.capacity();
debug_assert_eq!(self.len, v.len());
}

/// Appends given bytes to this `BytesMut`.
Expand Down

0 comments on commit e4af486

Please sign in to comment.