summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/items.c39
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;
}
}