Skip to content

Commit 6295e91

Browse files
ext2::read_at: avoid the extra allocation
Signed-off-by: Andy-Python-Programmer <[email protected]>
1 parent b3a3394 commit 6295e91

File tree

1 file changed

+4
-8
lines changed
  • src/aero_kernel/src/fs/ext2

1 file changed

+4
-8
lines changed

src/aero_kernel/src/fs/ext2/mod.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -431,15 +431,11 @@ impl INodeInterface for INode {
431431
return Err(FileSystemError::NotSupported);
432432
}
433433

434-
// TODO: We really should not allocate another buffer here.
435-
let mut buffer = Box::<[u8]>::new_uninit_slice(usr_buffer.len());
436-
let count = self.read(offset, MaybeUninit::slice_as_bytes_mut(&mut buffer))?;
434+
let buffer = unsafe {
435+
core::slice::from_raw_parts_mut(usr_buffer.as_mut_ptr().cast(), usr_buffer.len())
436+
};
437437

438-
// SAFETY: We have initialized the data buffer above.
439-
let buffer = unsafe { buffer.assume_init() };
440-
usr_buffer.copy_from_slice(&*buffer);
441-
442-
Ok(count)
438+
self.read(offset, buffer)
443439
}
444440

445441
fn write_at(&self, offset: usize, usr_buffer: &[u8]) -> super::Result<usize> {

0 commit comments

Comments
 (0)