memory leak fix - missed to unload photo data 89/49289/1
authorSoohye Shin <soohye.shin@samsung.com>
Mon, 12 Oct 2015 10:15:45 +0000 (19:15 +0900)
committerSoohye Shin <soohye.shin@samsung.com>
Mon, 12 Oct 2015 10:15:45 +0000 (19:15 +0900)
Change-Id: I6e6278a9da71de5151d60f916e7df883956ed8ea
Signed-off-by: Soohye Shin <soohye.shin@samsung.com>
src/data/data_photo.c

index f31e876..a1a8049 100644 (file)
@@ -40,16 +40,19 @@ static bool _get_media(media_info_h m, void *data)
 
        list = data;
 
+       r = media_info_get_media_id(m, &mediaid);
+       if (r != MEDIA_CONTENT_ERROR_NONE || !mediaid) {
+               _ERR("failed to get media id");
+               return false;
+       }
+
        r = media_info_get_thumbnail_path(m, &thumb);
        if (r != MEDIA_CONTENT_ERROR_NONE || !thumb) {
                _ERR("failed to get thumb");
+               free(mediaid);
                return false;
        }
 
-       r = media_info_get_media_id(m, &mediaid);
-       if (r != MEDIA_CONTENT_ERROR_NONE || !mediaid)
-               _ERR("failed to get media id");
-
        favorite = false;
        r = app_contents_favorite_check(CONTENTS_PHOTO, mediaid, &favorite);
        if (r != APP_CONTENTS_ERROR_NONE)
@@ -58,6 +61,8 @@ static bool _get_media(media_info_h m, void *data)
        di = calloc(1, sizeof(*di));
        if (!di) {
                _ERR("failed to calloc datamgr item");
+               free(mediaid);
+               free(thumb);
                return false;
        }
        di->icon = strdup(thumb);
@@ -66,15 +71,22 @@ static bool _get_media(media_info_h m, void *data)
 
        *list = eina_list_append(*list, di);
 
+       free(mediaid);
+       free(thumb);
+
        return true;
 }
 
 static void _unload_photo(struct datamgr *dm)
 {
-       char *thumb;
+       struct datamgr_item *di;
 
-       EINA_LIST_FREE(dm->list, thumb)
-               free(thumb);
+       EINA_LIST_FREE(dm->list, di) {
+               free(di->icon);
+               free(di->focus_icon);
+
+               free(di);
+       }
 
        dm->list = NULL;
 }