[librsvg] node.rs: Free the node.state in our Drop impl



commit 3cb68cdb73261d2b1df69c9a71aa5bdce89d75d8
Author: Federico Mena Quintero <federico gnome org>
Date:   Thu Feb 9 20:59:16 2017 -0600

    node.rs: Free the node.state in our Drop impl
    
    The RsvgState is a C-managed resource, so we need to free it by hand.

 rust/src/node.rs |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)
---
diff --git a/rust/src/node.rs b/rust/src/node.rs
index 257ad5f..64b8f1a 100644
--- a/rust/src/node.rs
+++ b/rust/src/node.rs
@@ -116,6 +116,16 @@ impl Node {
     }
 }
 
+extern "C" {
+    fn rsvg_state_free (state: *mut RsvgState);
+}
+
+impl Drop for Node {
+    fn drop (&mut self) {
+        unsafe { rsvg_state_free (self.state); }
+    }
+}
+
 #[no_mangle]
 pub extern fn rsvg_node_get_type (raw_node: *const RsvgNode) -> NodeType {
     assert! (!raw_node.is_null ());


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