[librsvg] rsvg_handle_dispose(): Free the libxml2 parser context



commit 31b6af3ce820d4f1b652ea72f8a0d9476c1f2937
Author: Federico Mena Quintero <federico gnome org>
Date:   Tue Aug 8 13:19:06 2017 -0500

    rsvg_handle_dispose(): Free the libxml2 parser context
    
    If the RsvgHandle was written to but not closed, then we'll still have
    an XML parser context at dispose time - don't leak it.
    
    Fixes the leak in https://bugzilla.gnome.org/show_bug.cgi?id=777833#c2

 rsvg-base.c    |    4 ++--
 rsvg-gobject.c |    2 ++
 2 files changed, 4 insertions(+), 2 deletions(-)
---
diff --git a/rsvg-base.c b/rsvg-base.c
index fabba55..4fdf4ca 100644
--- a/rsvg-base.c
+++ b/rsvg-base.c
@@ -2030,12 +2030,12 @@ rsvg_handle_read_stream_sync (RsvgHandle   *handle,
         goto out;
     }
 
-    priv->ctxt = rsvg_free_xml_parser_and_doc (priv->ctxt);
-
     res = TRUE;
 
   out:
 
+    priv->ctxt = rsvg_free_xml_parser_and_doc (priv->ctxt);
+
     g_object_unref (stream);
 
     priv->error = NULL;
diff --git a/rsvg-gobject.c b/rsvg-gobject.c
index 429e8fb..d496bcf 100644
--- a/rsvg-gobject.c
+++ b/rsvg-gobject.c
@@ -126,6 +126,8 @@ rsvg_handle_dispose (GObject *instance)
 
     self->priv->is_disposed = TRUE;
 
+    self->priv->ctxt = rsvg_free_xml_parser_and_doc (self->priv->ctxt);
+
     g_hash_table_destroy (self->priv->entities);
 
     free_nodes (self);


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