[glib] resources: Plug a mem leak



commit fa370571690356bc1082b89ff5b8b8a74664d16f
Author: Christian Persch <chpe gnome org>
Date:   Sun Feb 5 16:08:10 2012 +0100

    resources: Plug a mem leak
    
    ==26427== 24 bytes in 1 blocks are definitely lost in loss record 608 of 965
    ==26427==    at 0x402AD89: malloc (vg_replace_malloc.c:236)
    ==26427==    by 0x4084724: standard_malloc (gmem.c:85)
    ==26427==    by 0x40847C7: g_malloc (gmem.c:159)
    ==26427==    by 0x409B1E1: g_slice_alloc (gslice.c:1003)
    ==26427==    by 0x40BC038: g_variant_get_child_value (gvariant-core.c:969)
    ==26427==    by 0x40BA89F: g_variant_valist_get (gvariant.c:4482)
    ==26427==    by 0x40BAC23: g_variant_get_va (gvariant.c:4681)
    ==26427==    by 0x40BAB29: g_variant_get (gvariant.c:4633)
    ==26427==    by 0x4228BA5: do_lookup (gresource.c:293)
    ==26427==    by 0x4228F51: g_resource_get_info (gresource.c:493)

 gio/gresource.c |   35 +++++++++++++++++------------------
 1 files changed, 17 insertions(+), 18 deletions(-)
---
diff --git a/gio/gresource.c b/gio/gresource.c
index f177a85..ce4476f 100644
--- a/gio/gresource.c
+++ b/gio/gresource.c
@@ -295,24 +295,23 @@ static gboolean do_lookup (GResource *resource,
 		     &_flags,
 		     &array);
 
-      if (!res)
-	{
-	  if (size)
-	    *size = _size;
-	  if (flags)
-	    *flags = _flags;
-	  if (data)
-	    *data = g_variant_get_data (array);
-	  if (data_size)
-	    {
-	      /* Don't report trailing newline that non-compressed files has */
-	      if (_flags & G_RESOURCE_FLAGS_COMPRESSED)
-		*data_size = g_variant_get_size (array);
-	      else
-		*data_size = g_variant_get_size (array) - 1;
-	    }
-	  res = TRUE;
-	}
+      if (size)
+        *size = _size;
+      if (flags)
+        *flags = _flags;
+      if (data)
+        *data = g_variant_get_data (array);
+      if (data_size)
+        {
+          /* Don't report trailing newline that non-compressed files has */
+          if (_flags & G_RESOURCE_FLAGS_COMPRESSED)
+            *data_size = g_variant_get_size (array);
+          else
+            *data_size = g_variant_get_size (array) - 1;
+        }
+      g_variant_unref (array);
+
+      res = TRUE;
     }
 
   g_free (free_path);



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