diff options
| author | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2010-10-09 17:32:44 +0200 |
|---|---|---|
| committer | Tomas Bzatek <tbzatek@users.sourceforge.net> | 2010-10-09 17:32:44 +0200 |
| commit | a1e7a92e93e4760863105ae9f61ced93510e8cb2 (patch) | |
| tree | acfe6ea8e184aa8cadc51248b9989b33b241ead5 /src | |
| parent | 488cb536d5d59a63eaf1f01c3d760f94979c0deb (diff) | |
| download | cataract-a1e7a92e93e4760863105ae9f61ced93510e8cb2.tar.xz | |
Plug some more memory leaks
Diffstat (limited to 'src')
| -rw-r--r-- | src/items.c | 39 |
1 files changed, 17 insertions, 22 deletions
diff --git a/src/items.c b/src/items.c index da60748..ea0e4e9 100644 --- a/src/items.c +++ b/src/items.c @@ -56,6 +56,18 @@ get_album_path (TAlbum *items) return path ? path : g_strdup ("/"); } +static void +free_album_item (TIndexItem *item) +{ + g_free (item->path); + g_free (item->title); + g_free (item->title_description); + g_free (item->thumbnail); + g_free (item->preview); + g_free (item->border_style); + g_free (item); +} + /* * parse_album_xml: XML parser for gallery index.xml files @@ -157,15 +169,15 @@ parse_album_xml (const gchar *filename, TAlbum *index) for (i = 0; i < count; i++) { - item = malloc (sizeof (TIndexItem)); - memset (item, 0, sizeof (TIndexItem)); - s = g_strdup_printf ("/gallery/items/*[%d]", i + 1); node_name = xml_file_get_node_name (xml, s); g_free (s); if (! node_name) continue; + item = malloc (sizeof (TIndexItem)); + memset (item, 0, sizeof (TIndexItem)); + if (strcmp (node_name, "item") == 0) { item->type = INDEX_ITEM_TYPE_PICTURE; @@ -236,7 +248,7 @@ parse_album_xml (const gchar *filename, TAlbum *index) else { log_error ("%s: No image src specified, skipping!\n", filename); - g_free (item); + free_album_item (item); } } else @@ -290,27 +302,10 @@ free_album_data (TAlbum *album) g_strfreev (album->extra_files); if (album->items) { - if (album->items->len > 0) { - TIndexItem *item; - int i; - - for (i = 0; i < album->items->len; i++) { - item = g_ptr_array_index (album->items, i); - if (item != NULL) { - g_free (item->path); - g_free (item->title); - g_free (item->title_description); - g_free (item->thumbnail); - g_free (item->preview); - g_free (item->border_style); - g_free (item); - } - } - } + g_ptr_array_foreach (album->items, (GFunc) free_album_item, NULL); g_ptr_array_free (album->items, TRUE); } g_free (album); - album = NULL; } } |
