[TNEXt-737]Failt-Sanitizer Crash issue 17/131317/9
authorshubham kumar <shubham.srib@samsung.com>
Fri, 26 May 2017 08:36:14 +0000 (14:06 +0530)
committershubham kumar <shubham.srib@samsung.com>
Wed, 19 Jul 2017 05:20:17 +0000 (10:50 +0530)
Change-Id: Ie1cb5f4895d54bd8e987736fe490ae69dc392797
Signed-off-by: shubham kumar <shubham.srib@samsung.com>
src/common/mf-otg.c
src/common/mf-util.c
src/mf-main.c
src/widget/mf-root-view.c

index 2bf524d..588deba 100644 (file)
@@ -45,6 +45,9 @@ void mf_otg_list_clean(mf_otg_list_e list_type)
 {
        Eina_List *l = NULL;
        void *node = NULL;
+       if (!otg_dev_list) {
+               return;
+       }
        switch (list_type) {
        case MF_OTG_LIST_DEV:
                EINA_LIST_FOREACH(otg_dev_list, l, node) {
@@ -54,6 +57,7 @@ void mf_otg_list_clean(mf_otg_list_e list_type)
                                ((mf_otg_node *) node)->name = NULL;
                                free(((mf_otg_node *) node)->display_name);
                                ((mf_otg_node *) node)->display_name = NULL;
+                               free(node);
                        }
                }
 
@@ -70,6 +74,7 @@ void mf_otg_list_clean(mf_otg_list_e list_type)
                                ((mf_otg_node *) node)->name = NULL;
                                free(((mf_otg_node *) node)->display_name);
                                ((mf_otg_node *) node)->display_name = NULL;
+                               free(node);
                        }
                }
 
@@ -181,6 +186,7 @@ int mf_otg_delete_node(const char *name)
                                        ((mf_otg_node *) node)->name = NULL;
                                }
                                otg_dev_list = eina_list_remove_list(otg_dev_list, l);
+                               free(node);
                                break;
                        }
                }
index da691ac..99200fb 100644 (file)
@@ -113,6 +113,9 @@ void mf_util_history_list_clear(void *data)
        MF_CHECK(ap);
        char *p = NULL;
        Eina_List *list;
+       if (!ap->history) {
+               return;
+       }
        EINA_LIST_FOREACH(ap->history, list, p) {
                if (p) {
                        SAFE_FREE_CHAR(p);
@@ -171,10 +174,10 @@ void mf_file_decompression_start(void *data)
 {
        struct appdata *ap = (struct appdata *) data;
        ap->mf_MainWindow.pProgressPopup =
-               mf_popup_create_progress_pb_popup(ap, MF_LABEL_DECOMPRESS,
-                                                                                 MF_LABEL_DECOMPRESSING, 10,
-                                                                                 mf_callback_compress_cancel_cb,
-                                                                                 ap);;
+                       mf_popup_create_progress_pb_popup(ap, MF_LABEL_DECOMPRESS,
+                                       MF_LABEL_DECOMPRESSING, 10,
+                                       mf_callback_compress_cancel_cb,
+                                       ap);;
 
 
        evas_object_show(ap->mf_MainWindow.pProgressPopup);
@@ -184,7 +187,7 @@ void mf_file_decompression_start(void *data)
        }
 
        ap->mf_FileOperation.sync_pipe =
-               ecore_pipe_add(__mf_decompress_pipe_cb, ap);
+                       ecore_pipe_add(__mf_decompress_pipe_cb, ap);
 
 
        //pthread_t thread;
@@ -194,7 +197,7 @@ void mf_file_decompression_start(void *data)
 
        ret = pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
        pthread_create(&ap->thread1, &attr,
-                                  (void *) &mf_callback_decompress_cb, (void *) ap);
+                       (void *) &mf_callback_decompress_cb, (void *) ap);
        pthread_detach(ap->thread1);
 
 }
@@ -1146,6 +1149,7 @@ int mf_util_icu_init(void *data)
        skeletonLength = strlen(skeleton);
        if (i18n_ustring_copy_ua_n(customSkeleton, skeleton, skeletonLength) ==
                NULL) {
+               g_free(skeleton);
                return MYFILE_ERR_INVALID_ARG;
        }
 
@@ -1171,6 +1175,7 @@ int mf_util_icu_init(void *data)
 
        retcode = i18n_udatepg_create(region, &generator);
        if (generator == NULL) {
+               g_free(skeleton);
                return MYFILE_ERR_INVALID_ARG;
        }
 
@@ -1185,6 +1190,7 @@ int mf_util_icu_init(void *data)
                        i18n_udatepg_destroy(ap->mf_Status.generator);
                        ap->mf_Status.generator = NULL;
                }
+               g_free(skeleton);
                return MYFILE_ERR_INVALID_ARG;
        }
 
@@ -1196,12 +1202,14 @@ int mf_util_icu_init(void *data)
                        i18n_udate_destroy(ap->mf_Status.formatter);
                        ap->mf_Status.formatter = NULL;
                }
+               g_free(skeleton);
                return MYFILE_ERR_INVALID_ARG;
        }
        ap->mf_Status.generator = generator;
        ap->mf_Status.formatter = formatter;
        ap->mf_Status.flagIcuInit = TRUE;
        SAFE_FREE_CHAR(region);
+       g_free(skeleton);
        MF_TRACE_END;
        return MYFILE_ERR_NONE;
 }
index 58aab91..43298d5 100644 (file)
@@ -505,7 +505,7 @@ static void run_extra(void *data)
        }
 }
 
-void *initialization(void *data)
+bool initialization(void *data)
 {
        struct appdata *ap = (struct appdata *) data;
        int ret = 0;
@@ -522,16 +522,23 @@ void *initialization(void *data)
 
        /*Create content frame of Main Layout */
        ret = media_content_connect();
-       mf_retvm_if(ret < 0, NULL, "Fail to media_content_connect()");
+       if (ret < 0) {
+               mf_debug("failed to connect to media_content");
+               return FALSE;
+       }
 
        ret = mf_fs_monitor_create(ap);
-       mf_retvm_if(ret < 0, NULL, "Fail to mf_fs_monitor_create()");
+       if (ret < 0) {
+               mf_debug("failed to connect to media_content");
+               return FALSE;
+       }
 
+       ap->mf_Status.app_init_idler = NULL;
        ap->mf_Status.app_init_idler =
-               ecore_idler_add((Ecore_Task_Cb) __mf_main_app_init_idler_cb, ap);
+                       ecore_idler_add((Ecore_Task_Cb) __mf_main_app_init_idler_cb, ap);
 
        initialization_done = 1;
-       return NULL;
+       return TRUE;
 }
 
 Eina_Bool my_idle_enterer_cb(void *data)
@@ -618,7 +625,10 @@ bool __mf_main_create_app(void *data)
        MF_TRACE_BEGIN;
        t_start;
        struct appdata *ap = (struct appdata *) data;
-       initialization(data);
+       bool ret = initialization(data);
+       if (!ret) {
+               return FALSE;
+       }
 
        if (!mf_reg_db_update_noti(ap)) {
                mf_debug("update noti registered sucess");
@@ -730,8 +740,12 @@ bool __mf_main_create_app(void *data)
                                                                   mf_callback_profile_changed_cb, ap);
 
        ap->mf_Status.b_run_background = false;
+       char *first_item = strdup("main_view");
+       if (!first_item) {
+               return false;
+       }
 
-       ap->history = eina_list_prepend(ap->history, strdup("main_view"));
+       ap->history = eina_list_prepend(ap->history, first_item);
 
        mf_initialize_datacontrol_consumer(ap);
 
@@ -1039,17 +1053,21 @@ void __mf_main_terminate_app(void *data)
 
        mf_media_content_disconnect();
 
+       if (!ap->mf_Status.app_init_idler) {
+               return;
+       }
+
        SAFE_FREE_OBJ(ap->mf_MainWindow.pProgressPopup);
        media_content_remove_db_updated_cb(ap->noti_handle);
        mf_category_list_destory();
-       mf_callback_unregister_mmc_state_cb();
+       if (ap->mf_Status.app_init_idler) {
+               mf_callback_unregister_mmc_state_cb();
+       }
 #ifdef MYFILE_USB_OTG
        mf_callback_unregister_otg_state_cb();
        mf_otg_finalize();
 #endif
-       if (ap->mf_Status.search_handler) {
-               mf_search_finalize(&ap->mf_Status.search_handler);
-       }
+       mf_search_finalize(&ap->mf_Status.search_handler);
 
        mf_edit_folder_list_clear();
        mf_edit_file_list_clear();
index 05e8304..b91e44f 100644 (file)
@@ -104,12 +104,10 @@ Elm_Object_Item *mf_mw_root_category_item_prepend(void *data)
        }
 
        Elm_Object_Item *it = NULL;
-       /*if (first_index_item) {
-          it = elm_genlist_item_insert_before(genlist, &root_category_itc, ap, NULL, first_index_item, ELM_GENLIST_ITEM_NONE, NULL, NULL);
-          } else { */
+
        it = elm_genlist_item_prepend(genlist, &root_category_itc, ap, NULL,
                                                                  ELM_GENLIST_ITEM_NONE, NULL, NULL);
-       //}
+
        elm_genlist_item_show(it, ELM_GENLIST_ITEM_SCROLLTO_TOP);
        MF_TRACE_END;
        return it;
@@ -198,25 +196,7 @@ static Evas_Object *__mf_mw_category_content_get(void *data,
        /*create detail layout */
        category_state = mf_category_create(ap);
 
-       /*
-          Evas_Object *bx = elm_box_add(ap->mf_MainWindow.pNaviLayout);
-          evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, 0);
-          evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, 0);
-          evas_object_size_hint_min_set(bx, 720, -1);
-          elm_box_pack_end(bx, category);
-
-          Evas_Object *scroller = elm_scroller_add(ap->mf_MainWindow.pNaviLayout);
-          elm_scroller_bounce_set(scroller, EINA_TRUE, EINA_FALSE);
-          elm_scroller_policy_set(scroller,ELM_SCROLLER_POLICY_AUTO,ELM_SCROLLER_POLICY_AUTO);
-          elm_object_content_set(scroller, bx);
-          elm_object_scroll_lock_x_set(scroller,EINA_TRUE);
-          evas_object_show(scroller);
-
-          root_category = category;
-          box_root_category = bx;
-          mf_mw_root_category_refresh(ap);
-          //return category;
-        */
+
        MF_TRACE_END;
        return category_state;
 }
@@ -228,7 +208,6 @@ Elm_Object_Item *mf_mw_root_category_item_append(void *data)
        struct appdata *ap = (struct appdata *) data;
 
        Evas_Object *genlist = ap->mf_MainWindow.pNaviGenlist;
-       //category_index_item = __mf_root_view_group_index_create(ap, genlist, MF_LABEL_CATEGORY);
 
        int changed_angle = elm_win_rotation_get(ap->mf_MainWindow.pWindow);
        mf_debug("changed_angle is [%d]", changed_angle);
@@ -265,9 +244,10 @@ Elm_Object_Item *__mf_root_view_group_index_create(void *data,
                                                                                                   const char *text)
 {
        mfItemData_s *m_TempItem = NULL;
-       //struct appdata *ap = (struct appdata *)data;
-
        mf_genlist_create_data(&m_TempItem, text, data);
+       if (!m_TempItem) {
+               return NULL;
+       }
        m_TempItem->item =
                elm_genlist_item_append(genlist, &index_itc, m_TempItem, NULL,
                                                                ELM_GENLIST_ITEM_NONE, NULL, NULL);
@@ -356,96 +336,13 @@ void __mf_root_view_local_storage_items_append(void *data)
                                                                                 shortcut_list, NULL);
 }
 
-static bool __mf_add_storage_info_to_list(media_storage_h storage,
-                                                                                 void *data)
-{
-       struct appdata *ap = (struct appdata *) data;
-       char *base_dir = NULL;
-       //char *icon_path = NULL;
-       char *storage_name = NULL;
-       char *storage_uuid = NULL;
-//  long long int total = 0;
-//  long long int occupied = 0;
-//  double totalG = 0;
-//  double occupiedG = 0;
-       media_content_storage_e storage_type;
-
-       media_storage_get_type(storage, &storage_type);
-
-       if (storage_type == MEDIA_CONTENT_STORAGE_CLOUD) {
-               media_storage_get_id(storage, &storage_uuid);
-               media_storage_get_name(storage, &storage_name);
-               media_storage_get_path(storage, &base_dir);
-//      totalG = total / GIGABYTE;
-//      occupiedG = occupied / GIGABYTE;
-
-               //mf_error("storage_loaded - %s, %s, %s, %s, %5.2f/%5.2f GB, %d", storage_name, storage_uuid, base_dir, icon_path, occupiedG, totalG, storage_type);
-               storage_info *const pNode_cloud_storage =
-                       calloc(1, sizeof(storage_info));
-               if (!pNode_cloud_storage) {
-                       mf_error("no memory allocated");
-                       SAFE_FREE_CHAR(storage_uuid);
-                       SAFE_FREE_CHAR(storage_name);
-                       SAFE_FREE_CHAR(base_dir);
-                       return TRUE;
-               }
-
-               pNode_cloud_storage->root_name = storage_name;
-               pNode_cloud_storage->type = STORAGE_TYPE_STORAGE;
-
-               pNode_cloud_storage->uuid = storage_uuid;
-               pNode_cloud_storage->root_path = base_dir;
-
-//      pNode_cloud_storage->total = totalG;
-//      pNode_cloud_storage->occupied = occupiedG;
-//      pNode_cloud_storage->icon_path = icon_path;
-
-               ap->storage_list =
-                       eina_list_append(ap->storage_list, pNode_cloud_storage);
-       }
-       SAFE_FREE_CHAR(storage_uuid);
-       SAFE_FREE_CHAR(storage_name);
-       SAFE_FREE_CHAR(base_dir);
-       return TRUE;
-}
-
-static int __mf_root_view_cloud_storage(void *data)
-{
-       mf_retvm_if(data == NULL, -1, "data is NULL");
-       struct appdata *ap = (struct appdata *) data;
-       Evas_Object *genlist = ap->mf_MainWindow.pNaviGenlist;
-
-       if (!ap->storage_list) {
-               int ret =
-                       media_storage_foreach_storage_from_db(NULL,
-                                                                                                 __mf_add_storage_info_to_list,
-                                                                                                 data);
-               if (ret != MEDIA_CONTENT_ERROR_NONE) {
-                       mf_error("Cannot get clouds, errorcode: %d", ret);
-               }
-       }
-       /*Run once storage list is created. */
-       if (ap->storage_list) {
-               cloud_index_item =
-                       __mf_root_view_group_index_create(ap, genlist, MF_LABEL_CLOUD);
-               mf_genlist_cloud_content_set(ap, ap->mf_MainWindow.pNaviGenlist,
-                                                                        ap->storage_list);
-       }
-       return 0;
-}
-
 static Evas_Object *__mf_root_view_content_create(void *data)
 {
        mf_retvm_if(data == NULL, NULL, "data is NULL");
        struct appdata *ap = (struct appdata *) data;
        Evas_Object *content = NULL;
-
-       //int view_style = mf_view_style_get(ap);
-
        content = ap->mf_MainWindow.pNaviGenlist;
        __mf_root_view_local_storage_items_append(ap);
-       __mf_root_view_cloud_storage(ap);
-
        return content;
 }
 
@@ -458,7 +355,6 @@ Eina_Bool mf_root_view_back_cb(void *data, Elm_Object_Item * it)
        if (ap->mf_Status.more == MORE_DEFAULT) {
                if (ap->mf_Status.view_type == mf_view_root) {
                        Evas_Object *win = ap->mf_MainWindow.pWindow;
-//          mf_navi_bar_reset_navi_obj(ap);
                        elm_win_lower(win);
                } else if (ap->mf_Status.view_type == mf_view_root_category) {
                        if (ap->mf_MainWindow.pProgressPopup) {
@@ -517,7 +413,6 @@ Evas_Object *mf_mw_root_genlist_create(void *data)
        genlist = mf_object_create_genlist(ap->mf_MainWindow.pNaviBar);
        evas_object_smart_callback_add(genlist, "language,changed",
                                                                   mf_genlist_gl_lang_changed, data);
-       //evas_object_smart_callback_add(genlist, "longpressed", mf_genlist_gl_longpress, ap);
 
        evas_object_smart_callback_add(genlist, "selected",
                                                                   mf_edit_list_item_sel_cb, ap);
@@ -543,9 +438,7 @@ void mf_root_view_append_mmc_item_after_phone(Evas_Object * parent,
        char *real_name = NULL;
        mfItemData_s *m_TempItem = NULL;
        struct appdata *ap = (struct appdata *) data;
-       //int view_style = mf_view_style_get(ap);
 
-       //real_name = g_strconcat(pNode->path, "/", pNode->name, NULL);
        real_name = g_strdup(MEMORY_FOLDER);
        if (real_name == NULL) {
                return;
@@ -654,12 +547,6 @@ void mf_root_view_create(void *data)
        ap->mf_MainWindow.pNaviGenlist = newContent;
        category_item = mf_mw_root_category_item_append(ap);
 
-       //Evas_Object *category = mf_category_create(ap);
-
-       //elm_object_part_content_set(ap->mf_MainWindow.pNaviLayout, "category", category);
-       //mf_category_refresh(ap);
-
-
        __mf_root_group_index_style_set();
 
        __mf_root_view_content_create(ap);