diff --git a/src/lib.rs b/src/lib.rs index 4bd1c53..ab11c8e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,10 +1,10 @@ use std::{ cmp::{max, min}, ffi::{CStr, OsStr, c_void}, - fs, iter, - mem::MaybeUninit, + fs, os::unix::ffi::OsStrExt, path::Path, + ptr::NonNull, slice, }; @@ -260,10 +260,13 @@ unsafe extern "C" fn page_get_text( rect: zathura_rectangle_s, res: *mut ZathuraResult, ) -> *mut i8 { - let res = if res.is_null() { - &mut ZathuraResult::OK + let res = if let Some(mut r) = NonNull::new(res) { + unsafe { + r.write(ZathuraResult::Unknown); + r.as_mut() + } } else { - unsafe { &mut *(res as *mut MaybeUninit) }.write(ZathuraResult::Unknown) + &mut ZathuraResult::OK }; let typst_page: &Page = unsafe { &*(data as *mut _) }; @@ -299,10 +302,13 @@ unsafe extern "C" fn page_get_selection( rect: zathura_rectangle_s, res: *mut ZathuraResult, ) -> *mut girara_list_t { - let res = if res.is_null() { - &mut ZathuraResult::OK + let res = if let Some(mut r) = NonNull::new(res) { + unsafe { + r.write(ZathuraResult::Unknown); + r.as_mut() + } } else { - unsafe { &mut *(res as *mut MaybeUninit) }.write(ZathuraResult::Unknown) + &mut ZathuraResult::OK }; let typst_page: &Page = unsafe { &*(data as *mut _) }; @@ -345,6 +351,5 @@ unsafe extern "C" fn page_get_selection( } // TODO: render warnings -// TODO: PDF as attachment // TODO: link/... handling // TODO: better caching