diff options
Diffstat (limited to 'src/lib.rs')
-rw-r--r-- | src/lib.rs | 31 |
1 files changed, 2 insertions, 29 deletions
diff --git a/src/lib.rs b/src/lib.rs index 37b54a5..a644411 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -55,24 +55,7 @@ impl App { let mut attrs = std::collections::HashMap::default(); attrs.insert(crate::secrets::TOKEN_KIND, crate::secrets::ACCESS_TOKEN); attrs - }, libsecret::SearchFlags::ALL).await - // SAFETY: the representation of `glib::Error` is the same, since we're - // building against the same C library, so while this is a safety crime, it's - // probably a minor one. - // - // Additionally I'm ensuring the original wrapper is forgotten in case it has - // a drop handler that decrements a reference counter or something. - // - // This is only a workaround for libsecret not being updated in time. - .map_err(|e| unsafe { - let ptr = e.as_ptr(); - std::mem::forget(e); - glib::translate::from_glib_full::<_, glib::Error>( - // We can't name the original type here. - #[allow(clippy::missing_transmute_annotations)] - std::mem::transmute::<_, *mut glib::ffi::GError>(ptr) - ) - })?; + }, libsecret::SearchFlags::ALL).await?; if retrievables.is_empty() { Ok(None) @@ -100,17 +83,7 @@ impl App { let micropub = crate::micropub::Client::new( http.clone(), micropub_uri, - retrievable.retrieve_secret_future().await - // SAFETY: see above - .map_err(|e| unsafe { - let ptr = e.as_ptr(); - std::mem::forget(e); - glib::translate::from_glib_full::<_, glib::Error>( - // We can't name the original type here. - #[allow(clippy::missing_transmute_annotations)] - std::mem::transmute::<_, *mut glib::ffi::GError>(ptr) - ) - })? + retrievable.retrieve_secret_future().await? .unwrap() .text() .unwrap() |