Skip to content

Commit

Permalink
reduce bound checks
Browse files Browse the repository at this point in the history
  • Loading branch information
nolanderc committed May 2, 2024
1 parent 9a9a0d0 commit 74e25df
Showing 1 changed file with 6 additions and 6 deletions.
12 changes: 6 additions & 6 deletions heed/src/reserved_space.rs
Original file line number Diff line number Diff line change
Expand Up @@ -111,17 +111,17 @@ impl io::Write for ReservedSpace<'_> {

#[inline]
fn write_all(&mut self, buf: &[u8]) -> io::Result<()> {
let remaining = &mut self.bytes[self.write_head..];
let remaining = unsafe { self.bytes.get_unchecked_mut(self.write_head..) };

if buf.len() > remaining.len() {
return Err(io::Error::from(io::ErrorKind::WriteZero));
}

// SAFETY: we can always cast `T` -> `MaybeUninit<T>` as it's a transparent wrapper
let buf_uninit: &[std::mem::MaybeUninit<u8>] =
unsafe { std::slice::from_raw_parts(buf.as_ptr().cast(), buf.len()) };

remaining[..buf.len()].copy_from_slice(buf_uninit);
unsafe {
// SAFETY: we can always cast `T` -> `MaybeUninit<T>` as it's a transparent wrapper
let buf_uninit = std::slice::from_raw_parts(buf.as_ptr().cast(), buf.len());
remaining.get_unchecked_mut(..buf.len()).copy_from_slice(buf_uninit);
}

self.write_head += buf.len();
self.written = usize::max(self.written, self.write_head);
Expand Down

0 comments on commit 74e25df

Please sign in to comment.