[librsvg] rsvg_load_read_stream_sync(): No need to set the load->xml.ctxt; use a local variable



commit 45aae233700f0cc0b12ea8aa15f52e1af47185bf
Author: Federico Mena Quintero <federico gnome org>
Date:   Wed Dec 5 14:47:22 2018 -0600

    rsvg_load_read_stream_sync(): No need to set the load->xml.ctxt; use a local variable
    
    It turns out that load->xml.ctxt is useful just for the write/close
    API, not for streams.  This is because the write/close API requires a
    long-lived XML parsing context.
    
    For streams, though, the parser is created and consumed immediately.

 librsvg/rsvg-load.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)
---
diff --git a/librsvg/rsvg-load.c b/librsvg/rsvg-load.c
index 8ed4ebee..e809b2f9 100644
--- a/librsvg/rsvg-load.c
+++ b/librsvg/rsvg-load.c
@@ -307,6 +307,7 @@ rsvg_load_read_stream_sync (RsvgLoad     *load,
 {
     GError *err = NULL;
     gboolean res = FALSE;
+    xmlParserCtxtPtr xml_parser;
 
     stream = rsvg_get_input_stream_for_loading (stream, cancellable, error);
     if (stream == NULL) {
@@ -318,24 +319,24 @@ rsvg_load_read_stream_sync (RsvgLoad     *load,
     load->cancellable = cancellable ? g_object_ref (cancellable) : NULL;
 
     g_assert (load->xml.ctxt == NULL);
-    load->xml.ctxt = rsvg_create_xml_stream_parser (load->xml.rust_state,
-                                                    load->unlimited_size,
-                                                    stream,
-                                                    cancellable,
-                                                    &err);
+    xml_parser = rsvg_create_xml_stream_parser (load->xml.rust_state,
+                                                load->unlimited_size,
+                                                stream,
+                                                cancellable,
+                                                &err);
 
-    if (!load->xml.ctxt) {
+    if (!xml_parser) {
         g_assert (err != NULL);
         g_propagate_error (error, err);
 
         goto out;
     }
 
-    if (xmlParseDocument (load->xml.ctxt) != 0) {
+    if (xmlParseDocument (xml_parser) != 0) {
         if (err) {
             g_propagate_error (error, err);
         } else {
-            set_error_from_xml (error, load->xml.ctxt);
+            set_error_from_xml (error, xml_parser);
         }
 
         goto out;
@@ -350,7 +351,7 @@ rsvg_load_read_stream_sync (RsvgLoad     *load,
 
   out:
 
-    load->xml.ctxt = free_xml_parser_and_doc (load->xml.ctxt);
+    xml_parser = free_xml_parser_and_doc (xml_parser);
 
     g_object_unref (stream);
 


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