[gegl] buffer: don't leak hash table entries in the async file backend



commit 2c05ffe05750281b3357085c05e0f9c7bf8e73f8
Author: Ville Sokk <ville sokk gmail com>
Date:   Sat Sep 29 21:02:33 2012 +0300

    buffer: don't leak hash table entries in the async file backend

 gegl/buffer/gegl-tile-backend-file-async.c |   21 +++++++++++++++------
 1 files changed, 15 insertions(+), 6 deletions(-)
---
diff --git a/gegl/buffer/gegl-tile-backend-file-async.c b/gegl/buffer/gegl-tile-backend-file-async.c
index 55965cd..6b4a3a1 100644
--- a/gegl/buffer/gegl-tile-backend-file-async.c
+++ b/gegl/buffer/gegl-tile-backend-file-async.c
@@ -475,9 +475,9 @@ gegl_tile_backend_file_file_entry_new (GeglTileBackendFile *self)
   return entry;
 }
 
-static inline void
-gegl_tile_backend_file_file_entry_destroy (GeglFileBackendEntry *entry,
-                                           GeglTileBackendFile  *self)
+static void
+gegl_tile_backend_file_file_entry_destroy (GeglTileBackendFile  *self,
+                                           GeglFileBackendEntry *entry)
 {
   /* XXX: EEEk, throwing away bits */
   guint offset = entry->tile->offset;
@@ -748,7 +748,7 @@ gegl_tile_backend_file_void_tile (GeglTileSource *self,
 
   if (entry != NULL)
     {
-      gegl_tile_backend_file_file_entry_destroy (entry, tile_backend_file);
+      gegl_tile_backend_file_file_entry_destroy (tile_backend_file, entry);
     }
 
   return NULL;
@@ -909,8 +909,17 @@ gegl_tile_backend_file_finalize (GObject *object)
 
   if (self->index)
     {
-      if (g_hash_table_size (self->index) > 0)
-        g_warning ("leaking all entries in GeglTileBackendFile->index");
+      GList *tiles = g_hash_table_get_keys (self->index);
+
+      if (tiles != NULL)
+        {
+          GList *iter;
+
+          for (iter = tiles; iter; iter = iter->next)
+            gegl_tile_backend_file_file_entry_destroy (self, iter->data);
+        }
+
+      g_list_free (tiles);
 
       g_hash_table_unref (self->index);
     }



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