[gtk+] rendernode: Don't leak mem_surface



commit af734c4007c5cd12150d14a72dfc8ec84db3c5ec
Author: Timm Bäder <mail baedert org>
Date:   Tue Oct 10 09:07:34 2017 +0200

    rendernode: Don't leak mem_surface

 gsk/gskrendernodeimpl.c |   22 ++++++++++++----------
 1 files changed, 12 insertions(+), 10 deletions(-)
---
diff --git a/gsk/gskrendernodeimpl.c b/gsk/gskrendernodeimpl.c
index 13fbd00..b3a6e24 100644
--- a/gsk/gskrendernodeimpl.c
+++ b/gsk/gskrendernodeimpl.c
@@ -1749,6 +1749,7 @@ gsk_cairo_node_serialize (GskRenderNode *node)
       int width, height;
       int stride, i;
       guchar *mem_surface, *data;
+      GVariant *result;
 
       width = cairo_image_surface_get_width (self->surface);
       height = cairo_image_surface_get_height (self->surface);
@@ -1760,17 +1761,18 @@ gsk_cairo_node_serialize (GskRenderNode *node)
       for (i = 0; i < height; i++)
         memcpy (mem_surface + i * width * 4, data + i * stride, width * 4);
 
-      return g_variant_new ("(dddduu@au)",
-                            (double) node->bounds.origin.x, (double) node->bounds.origin.y,
-                            (double) node->bounds.size.width, (double) node->bounds.size.height,
-                            (guint32) width,
-                            (guint32) height,
-                            g_variant_new_fixed_array (G_VARIANT_TYPE ("u"),
-                                                       mem_surface,
-                                                       width * height,
-                                                       sizeof (guint32)));
-
+      result = g_variant_new ("(dddduu@au)",
+                             (double) node->bounds.origin.x, (double) node->bounds.origin.y,
+                             (double) node->bounds.size.width, (double) node->bounds.size.height,
+                             (guint32) width,
+                             (guint32) height,
+                             g_variant_new_fixed_array (G_VARIANT_TYPE ("u"),
+                                                        mem_surface,
+                                                        width * height,
+                                                        sizeof (guint32)));
       g_free (mem_surface);
+
+      return result;
     }
 }
 


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