mirror of
https://github.com/Drop-OSS/drop
synced 2026-08-27 14:23:05 -04:00
feat: null-ptr fix
This commit is contained in:
parent
e5d818f819
commit
e1f1cbb4da
2 changed files with 11 additions and 5 deletions
|
|
@ -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)),
|
||||
|
|
|
|||
|
|
@ -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())),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue