[libgxps] Fixed memory leak when parsing a brush fails



commit 4874d0f48dd3a72865d4df579cb3563c520f6d6a
Author: Jason Crain <jason aquaticape us>
Date:   Fri Jan 6 22:06:13 2012 -0600

    Fixed memory leak when parsing a brush fails
    
    A GXPSBrush struct is leaked when parsing fails for a child of a
    XXX.Fill or XXX.Stroke element.  Parsing is aborted when invalid data
    is encountered and cleanup code is not run.  This adds a error handler
    to the brush GMarkupParser to free the struct on error.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=668968

 libgxps/gxps-brush.c |   12 +++++++++++-
 1 files changed, 11 insertions(+), 1 deletions(-)
---
diff --git a/libgxps/gxps-brush.c b/libgxps/gxps-brush.c
index b573bd5..6cad41d 100644
--- a/libgxps/gxps-brush.c
+++ b/libgxps/gxps-brush.c
@@ -1042,11 +1042,21 @@ brush_end_element (GMarkupParseContext  *context,
         }
 }
 
+static void
+brush_error (GMarkupParseContext *context,
+	     GError              *error,
+	     gpointer             user_data)
+{
+	GXPSBrush *brush = (GXPSBrush *)user_data;
+	gxps_brush_free (brush);
+}
+
 static GMarkupParser brush_parser = {
         brush_start_element,
         brush_end_element,
         NULL,
-        NULL
+        NULL,
+        brush_error
 };
 
 void



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