feat: null-ptr fix

This commit is contained in:
DecDuck
2026-03-01 22:18:22 +11:00
parent e5d818f819
commit e1f1cbb4da
2 changed files with 11 additions and 5 deletions
+4 -4
View File
@@ -42,14 +42,14 @@ impl fmt::Display for ArchiveError {
}
}
impl<'a> From<&'a archive::Handle> for ArchiveError {
fn from(handle: &'a archive::Handle) -> ArchiveError {
impl<'a> From<&'a dyn archive::Handle> for ArchiveError {
fn from(handle: &'a dyn archive::Handle) -> ArchiveError {
ArchiveError::Sys(handle.err_code(), handle.err_msg())
}
}
impl<'a> From<&'a archive::Handle> for ArchiveResult<()> {
fn from(handle: &'a archive::Handle) -> ArchiveResult<()> {
impl<'a> From<&'a dyn archive::Handle> for ArchiveResult<()> {
fn from(handle: &'a dyn archive::Handle) -> ArchiveResult<()> {
match handle.err_code() {
ErrCode(0) => Ok(()),
_ => Err(ArchiveError::from(handle)),
+7 -1
View File
@@ -57,7 +57,13 @@ pub trait Reader: Handle {
unsafe {
match ffi::archive_read_data_block(self.handle(), &mut buff, &mut size, &mut offset) {
ffi::ARCHIVE_EOF => Ok(None),
ffi::ARCHIVE_OK => Ok(Some(slice::from_raw_parts(buff as *const u8, size))),
ffi::ARCHIVE_OK => {
if buff != ptr::null() {
Ok(Some(slice::from_raw_parts(buff as *const u8, size)))
} else {
return self.read_block();
}
}
_ => Err(ArchiveError::Sys(self.err_code(), self.err_msg())),
}
}