diff options
author | Soohye Shin <soohye.shin@samsung.com> | 2015-10-12 19:15:45 +0900 |
---|---|---|
committer | Soohye Shin <soohye.shin@samsung.com> | 2015-10-12 19:15:45 +0900 |
commit | 72f945bd0a887407459759df7ba1128c8d8543ec (patch) | |
tree | 41217be23deeccadfba3bbad3898287ff527002b | |
parent | db32dc32366675a628a1f11686284e2591d40ab9 (diff) | |
download | air_home-72f945bd0a887407459759df7ba1128c8d8543ec.tar.gz air_home-72f945bd0a887407459759df7ba1128c8d8543ec.tar.bz2 air_home-72f945bd0a887407459759df7ba1128c8d8543ec.zip |
memory leak fix - missed to unload photo data
Change-Id: I6e6278a9da71de5151d60f916e7df883956ed8ea
Signed-off-by: Soohye Shin <soohye.shin@samsung.com>
-rw-r--r-- | src/data/data_photo.c | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/data/data_photo.c b/src/data/data_photo.c index f31e876..a1a8049 100644 --- a/src/data/data_photo.c +++ b/src/data/data_photo.c @@ -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; } |