[gegl] buffer: don't leak hash table entries in the async file backend
- From: Ville Sokk <villesokk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gegl] buffer: don't leak hash table entries in the async file backend
- Date: Sat, 29 Sep 2012 18:03:31 +0000 (UTC)
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]