(pxar: replace deprecated std::mem::uninitialized()

... and use std::mem::MaybeUninit or proxmox::tools::vec::uninitialized() instead.

Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
Christian Ebner 2019-08-22 12:49:06 +02:00 committed by Wolfgang Bumiller
parent 5e58e1bb7d
commit 1af30bc2fe
2 changed files with 7 additions and 5 deletions

View File

@ -1141,9 +1141,10 @@ fn errno_is_unsupported(errno: Errno) -> bool {
}
fn detect_fs_type(fd: RawFd) -> Result<i64, Error> {
let mut fs_stat: libc::statfs = unsafe { std::mem::uninitialized() };
let res = unsafe { libc::fstatfs(fd, &mut fs_stat) };
let mut fs_stat = std::mem::MaybeUninit::uninit();
let res = unsafe { libc::fstatfs(fd, fs_stat.as_mut_ptr()) };
Errno::result(res)?;
let fs_stat = unsafe { fs_stat.assume_init() };
Ok(fs_stat.f_type)
}

View File

@ -67,14 +67,15 @@ impl <R: Read, F: Fn(&Path) -> Result<(), Error>> SequentialDecoder<R, F> {
pub (crate) fn read_item<T: Endian>(&mut self) -> Result<T, Error> {
let mut result: T = unsafe { std::mem::uninitialized() };
let mut result = std::mem::MaybeUninit::<T>::uninit();
let buffer = unsafe { std::slice::from_raw_parts_mut(
&mut result as *mut T as *mut u8,
result.as_mut_ptr() as *mut u8,
std::mem::size_of::<T>()
)};
self.reader.read_exact(buffer)?;
let result = unsafe { result.assume_init() };
Ok(result.from_le())
}
@ -576,7 +577,6 @@ impl <R: Read, F: Fn(&Path) -> Result<(), Error>> SequentialDecoder<R, F> {
entry: &PxarEntry,
filename: &OsStr
) -> Result<(), Error> {
let mut read_buffer: [u8; 64*1024] = unsafe { std::mem::uninitialized() };
let (head, attr) = self.read_attributes()
.map_err(|err| format_err!("Reading of file attributes failed - {}", err))?;
@ -595,6 +595,7 @@ impl <R: Read, F: Fn(&Path) -> Result<(), Error>> SequentialDecoder<R, F> {
}
let need = (head.size - HEADER_SIZE) as usize;
let mut read_buffer = unsafe { vec::uninitialized(64 * 1024) };
let mut done = 0;
while done < need {
let todo = need - done;