[librsvg] handle::load_extern() - return a Result



commit 1df15f73ebc386d2a175b8bd9079dabce5f3b2bd
Author: Federico Mena Quintero <federico gnome org>
Date:   Mon Nov 26 14:11:15 2018 -0600

    handle::load_extern() - return a Result

 rsvg_internals/src/defs.rs   | 10 +++-------
 rsvg_internals/src/handle.rs | 12 ++++++++++--
 2 files changed, 13 insertions(+), 9 deletions(-)
---
diff --git a/rsvg_internals/src/defs.rs b/rsvg_internals/src/defs.rs
index 8bcf86fb..b743995d 100644
--- a/rsvg_internals/src/defs.rs
+++ b/rsvg_internals/src/defs.rs
@@ -60,13 +60,9 @@ impl Defs {
             Some(uri) => match self.externs.entry(uri) {
                 Entry::Occupied(e) => Ok(*(e.get())),
                 Entry::Vacant(e) => {
-                    let extern_handle = handle::load_extern(handle, e.key());
-                    if extern_handle.is_null() {
-                        Err(())
-                    } else {
-                        e.insert(extern_handle);
-                        Ok(extern_handle)
-                    }
+                    let extern_handle = handle::load_extern(handle, e.key())?;
+                    e.insert(extern_handle);
+                    Ok(extern_handle)
                 }
             },
         }
diff --git a/rsvg_internals/src/handle.rs b/rsvg_internals/src/handle.rs
index 720dee56..19de2795 100644
--- a/rsvg_internals/src/handle.rs
+++ b/rsvg_internals/src/handle.rs
@@ -92,8 +92,16 @@ pub fn resolve_uri(handle: *const RsvgHandle, uri: &str) -> Option<String> {
     }
 }
 
-pub fn load_extern(handle: *const RsvgHandle, uri: &str) -> *const RsvgHandle {
-    unsafe { rsvg_handle_load_extern(handle, uri.to_glib_none().0) }
+pub fn load_extern(handle: *const RsvgHandle, uri: &str) -> Result<*const RsvgHandle, ()> {
+    unsafe {
+        let res = rsvg_handle_load_extern(handle, uri.to_glib_none().0);
+
+        if res.is_null() {
+            Err(())
+        } else {
+            Ok(res)
+        }
+    }
 }
 
 pub fn get_css_styles<'a>(handle: *const RsvgHandle) -> &'a CssStyles {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]