[Bug] free per node while freeing eina_list in Setting >Storage .
authoryigang.jing <yigang.jing@samsung.com>
Wed, 14 Nov 2012 05:14:59 +0000 (13:14 +0800)
committeryigang.jing <yigang.jing@samsung.com>
Wed, 14 Nov 2012 05:14:59 +0000 (13:14 +0800)
Change-Id: I0a0f80791defd4cd1d9ce9bcca8820ed8d59b828

setting-storage/src/setting-storage-main.c
setting-storage/src/setting-storage-miscellaneous-files.c

index 67ad910..84ad3ef 100755 (executable)
@@ -243,11 +243,23 @@ static long long __setting_storage_main_folder_size_get(char *path)
        }
 
        if (file_list) {
+               Eina_List *l = NULL;
+               Node_Info *node = NULL;
+               EINA_LIST_FOREACH(file_list, l, node)
+               {
+                       FREE(node);
+               }
                eina_list_free(file_list);
                file_list = NULL;
        }
 
        if (dir_list) {
+               Eina_List *l = NULL;
+               Node_Info *node = NULL;
+               EINA_LIST_FOREACH(dir_list, l, node)
+               {
+                       FREE(node);
+               }
                eina_list_free(dir_list);
                dir_list = NULL;
        }
@@ -574,11 +586,23 @@ static double __setting_storage_main_miscellaneous_size_get()
        }
 
        if (file_list) {
+               Eina_List *l = NULL;
+               Node_Info *node = NULL;
+               EINA_LIST_FOREACH(file_list, l, node)
+               {
+                       FREE(node);
+               }
                eina_list_free(file_list);
                file_list = NULL;
        }
 
        if (dir_list) {
+               Eina_List *l = NULL;
+               Node_Info *node = NULL;
+               EINA_LIST_FOREACH(dir_list, l, node)
+               {
+                       FREE(node);
+               }
                eina_list_free(dir_list);
                dir_list = NULL;
        }
index 08055eb..e3021a8 100755 (executable)
@@ -136,7 +136,8 @@ static int setting_storage_miscellaneous_files_create(void *cb)
                pNode = (Node_Info *)eina_list_nth(list, i);
                if (pNode == NULL)
                        continue;
-               list_data->chk_items[i].item_name = pNode->name;
+               G_FREE(list_data->chk_items[i].item_name);
+               list_data->chk_items[i].item_name = (char *)g_strdup(pNode->name);
        }
 
        list_data->cur_item_num = i;
@@ -145,6 +146,12 @@ static int setting_storage_miscellaneous_files_create(void *cb)
        elm_object_part_content_set(view_layout, "elm.swallow.contents", scroller);
 
        if (list) {
+               Eina_List *l = NULL;
+               Node_Info *node = NULL;
+               EINA_LIST_FOREACH(list, l, node)
+               {
+                       FREE(node);
+               }
                eina_list_free(list);
                list = NULL;
        }
@@ -165,6 +172,11 @@ static int setting_storage_miscellaneous_files_destroy(void *cb)
        retv_if(cb == NULL, SETTING_GENERAL_ERR_NULL_DATA_PARAMETER);
        SettingStorageUG *ad = (SettingStorageUG *)cb;
 
+       int i = 0;
+       for (; i < MAX_RESET_MENU_NUM; i++) {
+               G_FREE(ad->miscellaneous_list.chk_items[i].item_name);
+       }
+
        if (ad->miscellaneous_list.selInfoPop) {
                evas_object_del(ad->miscellaneous_list.selInfoPop);
                ad->miscellaneous_list.selInfoPop = NULL;
@@ -254,11 +266,23 @@ static int __setting_storage_file_remove(char *path)
        }
 
        if (file_list) {
+               Eina_List *l = NULL;
+               Node_Info *node = NULL;
+               EINA_LIST_FOREACH(file_list, l, node)
+               {
+                       FREE(node);
+               }
                eina_list_free(file_list);
                file_list = NULL;
        }
 
        if (dir_list) {
+               Eina_List *l = NULL;
+               Node_Info *node = NULL;
+               EINA_LIST_FOREACH(dir_list, l, node)
+               {
+                       FREE(node);
+               }
                eina_list_free(dir_list);
                dir_list = NULL;
        }
@@ -293,7 +317,9 @@ static void __setting_storage_miscellaneous_files_genlist_update(void *data)
                pNode = (Node_Info *)eina_list_nth(list, i);
                if (pNode == NULL)
                        continue;
-               ad->miscellaneous_list.chk_items[i].item_name = pNode->name;
+
+               G_FREE(ad->miscellaneous_list.chk_items[i].item_name);
+               ad->miscellaneous_list.chk_items[i].item_name = (char *)g_strdup(pNode->name);
        }
 
        ad->miscellaneous_list.cur_item_num = i;
@@ -302,6 +328,12 @@ static void __setting_storage_miscellaneous_files_genlist_update(void *data)
        elm_object_part_content_set(view_layout, "elm.swallow.contents", scroller);
 
        if (list) {
+               Eina_List *l = NULL;
+               Node_Info *node = NULL;
+               EINA_LIST_FOREACH(list, l, node)
+               {
+                       FREE(node);
+               }
                eina_list_free(list);
                list = NULL;
        }