[librsvg: 6/10] rsvg_xml_state_steal_result(): Renamed from rsvg_xml_state_steal_tree()



commit 5568391d7bf5d0bc56e1c7133d5706bbb98f49f8
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Nov 22 12:36:59 2018 -0600

    rsvg_xml_state_steal_result(): Renamed from rsvg_xml_state_steal_tree()

 librsvg/rsvg-load.c       |  4 ++--
 rsvg_internals/src/lib.rs |  2 +-
 rsvg_internals/src/xml.rs | 18 +++++++++++-------
 3 files changed, 14 insertions(+), 10 deletions(-)
---
diff --git a/librsvg/rsvg-load.c b/librsvg/rsvg-load.c
index da58fb23..bb2861a9 100644
--- a/librsvg/rsvg-load.c
+++ b/librsvg/rsvg-load.c
@@ -51,7 +51,7 @@ typedef struct RsvgXmlState RsvgXmlState;
 /* Implemented in rsvg_internals/src/xml.rs */
 extern RsvgXmlState *rsvg_xml_state_new ();
 extern void rsvg_xml_state_free (RsvgXmlState *xml);
-extern RsvgTree *rsvg_xml_state_steal_tree(RsvgXmlState *xml);
+extern void rsvg_xml_state_steal_result(RsvgXmlState *xml, RsvgTree **out_tree);
 extern void rsvg_xml_state_start_element(RsvgXmlState *xml, RsvgHandle *handle, const char *name, 
RsvgPropertyBag atts);
 extern void rsvg_xml_state_end_element(RsvgXmlState *xml, RsvgHandle *handle, const char *name);
 extern void rsvg_xml_state_characters(RsvgXmlState *xml, const char *unterminated_text, gsize len);
@@ -145,7 +145,7 @@ void
 rsvg_load_steal_result (RsvgLoad *load,
                         RsvgTree **out_tree)
 {
-    *out_tree = rsvg_xml_state_steal_tree (load->xml.rust_state);
+    rsvg_xml_state_steal_result (load->xml.rust_state, out_tree);
 }
 
 static void
diff --git a/rsvg_internals/src/lib.rs b/rsvg_internals/src/lib.rs
index 627ddf0f..281b8442 100644
--- a/rsvg_internals/src/lib.rs
+++ b/rsvg_internals/src/lib.rs
@@ -71,7 +71,7 @@ pub use xml::{
     rsvg_xml_state_free,
     rsvg_xml_state_new,
     rsvg_xml_state_start_element,
-    rsvg_xml_state_steal_tree,
+    rsvg_xml_state_steal_result,
 };
 
 #[macro_use]
diff --git a/rsvg_internals/src/xml.rs b/rsvg_internals/src/xml.rs
index 8b0c6dee..269627c3 100644
--- a/rsvg_internals/src/xml.rs
+++ b/rsvg_internals/src/xml.rs
@@ -395,15 +395,19 @@ pub extern "C" fn rsvg_xml_state_free(xml: *mut RsvgXmlState) {
 }
 
 #[no_mangle]
-pub extern "C" fn rsvg_xml_state_steal_tree(xml: *mut RsvgXmlState) -> *mut RsvgTree {
+pub unsafe extern "C" fn rsvg_xml_state_steal_result(
+    xml: *mut RsvgXmlState,
+    out_tree: *mut *mut RsvgTree,
+) {
     assert!(!xml.is_null());
-    let xml = unsafe { &mut *(xml as *mut XmlState) };
+    assert!(!out_tree.is_null());
 
-    if let Some(tree) = xml.steal_tree() {
-        Box::into_raw(tree) as *mut RsvgTree
-    } else {
-        ptr::null_mut()
-    }
+    let xml = &mut *(xml as *mut XmlState);
+
+    *out_tree = xml
+        .steal_tree()
+        .map(|tree| Box::into_raw(tree) as *mut RsvgTree)
+        .unwrap_or(ptr::null_mut());
 }
 
 #[no_mangle]


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