diff --git a/src/buffer.rs b/src/buffer.rs index d7c0924ce..1e705df3f 100644 --- a/src/buffer.rs +++ b/src/buffer.rs @@ -9,13 +9,16 @@ use core::slice; /// /// # Safety /// -/// At least `init` bytes must be initialized. +/// At least `init_len` bytes must be initialized. #[inline] pub(super) unsafe fn split_init( buf: &mut [MaybeUninit], - init: usize, + init_len: usize, ) -> (&mut [u8], &mut [MaybeUninit]) { - let (init, uninit) = buf.split_at_mut(init); - let init = slice::from_raw_parts_mut(init.as_mut_ptr().cast::(), init.len()); + debug_assert!(init_len <= buf.len()); + let buf_ptr = buf.as_mut_ptr(); + let uninit_len = buf.len() - init_len; + let init = slice::from_raw_parts_mut(buf_ptr.cast::(), init_len); + let uninit = slice::from_raw_parts_mut(buf_ptr.add(init_len), uninit_len); (init, uninit) }