summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/data/albumdata.c20
-rw-r--r--src/data/folderdata.c53
2 files changed, 40 insertions, 33 deletions
diff --git a/src/data/albumdata.c b/src/data/albumdata.c
index 9aa9537..a81f3a0 100644
--- a/src/data/albumdata.c
+++ b/src/data/albumdata.c
@@ -181,17 +181,21 @@ static void _destroy_media_list(Eina_List *list)
app_media_destroy(am);
}
+static void _destroy_album_info(struct album_info *ai)
+{
+ free(ai->name);
+ free(ai->artist);
+ free(ai->album_art);
+
+ free(ai);
+}
+
static void _destroy_album_list(Eina_List *list)
{
struct album_info *ai;
- EINA_LIST_FREE(list, ai) {
- free(ai->name);
- free(ai->artist);
- free(ai->album_art);
-
- free(ai);
- }
+ EINA_LIST_FREE(list, ai)
+ _destroy_album_info(ai);
}
static bool _get_each_media_info(media_info_h media_h, void *data)
@@ -276,7 +280,7 @@ static bool _get_each_album_info(media_album_h album, void *data)
err:
media_filter_destroy(filter);
- free(ai);
+ _destroy_album_info(ai);
return false;
}
diff --git a/src/data/folderdata.c b/src/data/folderdata.c
index 2f1d48f..bd9ad40 100644
--- a/src/data/folderdata.c
+++ b/src/data/folderdata.c
@@ -159,18 +159,22 @@ static char *_get_title(app_media_info *mi)
return strndup(mi->title, 1);
}
+static void _destroy_folder_info(struct folder_info *fi)
+{
+ free(fi->id);
+ free(fi->name);
+ free(fi->path);
+ free(fi->parent_id);
+
+ free(fi);
+}
+
static void _destroy_folder_list(Eina_List *list)
{
struct folder_info *fi;
- EINA_LIST_FREE(list, fi) {
- free(fi->id);
- free(fi->name);
- free(fi->path);
- free(fi->parent_id);
-
- free(fi);
- }
+ EINA_LIST_FREE(list, fi)
+ _destroy_folder_info(fi);
}
static void _destroy_media_list(Eina_List *list)
@@ -216,46 +220,40 @@ static bool _get_each_folder_info(media_folder_h folder, void *data)
return false;
}
+ if (!_create_filter(fd, &filter, NULL, E_FILTER_MEDIA)) {
+ _ERR("failed to create filter");
+ free(fi);
+ return false;
+ }
+
if (media_folder_get_folder_id(folder, &(fi->id))
!= MEDIA_CONTENT_ERROR_NONE) {
_ERR("failed to fetch folder id");
- free(fi);
- return false;
+ goto err;
}
if (media_folder_get_name(folder, &(fi->name))
!= MEDIA_CONTENT_ERROR_NONE) {
_ERR("failed to fetch folder name");
- free(fi);
- return false;
+ goto err;
}
if (media_folder_get_path(folder, &(fi->path))
!= MEDIA_CONTENT_ERROR_NONE) {
_ERR("failed to fetch folder path");
- free(fi);
- return false;
+ goto err;
}
if (media_folder_get_parent_folder_id(folder, &(fi->parent_id))
!= MEDIA_CONTENT_ERROR_NONE) {
_ERR("failed to fetch parent folder id");
- free(fi);
- return false;
- }
-
- if (!_create_filter(fd, &filter, NULL, E_FILTER_MEDIA)) {
- _ERR("failed to create filter");
- free(fi);
- return false;
+ goto err;
}
if (media_folder_get_media_count_from_db(fi->id, filter, &(fi->count))
!= MEDIA_CONTENT_ERROR_NONE) {
_ERR("failed to get media count");
- free(fi);
- media_filter_destroy(filter);
- return false;
+ goto err;
}
fd->folder_list = eina_list_append(fd->folder_list, fi);
@@ -263,6 +261,11 @@ static bool _get_each_folder_info(media_folder_h folder, void *data)
media_filter_destroy(filter);
return true;
+
+err:
+ media_filter_destroy(filter);
+ _destroy_folder_info(fi);
+ return false;
}
static bool _get_each_media_info(media_info_h media_h, void *data)