fix crash when resume cb is called 2.0alpha master 2.0_alpha accepted/tizen/20130520.102814 submit/master/20120920.151053 submit/tizen/20130517.015521
authorGenie Kim <daejins.kim@samsung.com>
Tue, 11 Sep 2012 12:50:09 +0000 (21:50 +0900)
committerGenie Kim <daejins.kim@samsung.com>
Tue, 11 Sep 2012 12:50:09 +0000 (21:50 +0900)
libug-setting-location-efl-appman.c
libug-setting-location-efl.c

index 2dfd2f6..dafe1f7 100644 (file)
@@ -99,7 +99,11 @@ void setting_location_delete_app_list(Evas_Object *genlist, struct ug_data *ugd)
                elm_object_item_del(ugd->gi_line);
                elm_genlist_item_class_free(ugd->itc_line);
        }
-       
+
+       if (ugd->app_info == NULL) {
+               return;
+       }
+
        for (i = 0; i < ugd->app_count; i++) {
                if (ugd->app_info[i].gi_app != NULL) {
                        elm_object_item_del(ugd->app_info[i].gi_app);
@@ -109,9 +113,16 @@ void setting_location_delete_app_list(Evas_Object *genlist, struct ug_data *ugd)
                }
        }
 
-       if (ugd->app_info != NULL) {
-               free(ugd->app_info);
-       }
+       free(ugd->app_info);
+}
+
+void setting_location_appman_init(struct ug_data *ugd)
+{
+       ugd->app_info = NULL;
+       ugd->itc_line = NULL;
+       ugd->itc_msg = NULL;
+       ugd->gi_msg = NULL;
+       ugd->gi_line = NULL;
 }
 
 int setting_location_get_location_app_list(Evas_Object *genlist, struct ug_data *ugd)
@@ -124,7 +135,7 @@ int setting_location_get_location_app_list(Evas_Object *genlist, struct ug_data
                LOC_LOG("Fail to location_appman_get_app_list");
                return FALSE;
        }
-
+       setting_location_appman_init(ugd);
        LOC_LOG("app count : %d", ugd->app_count);
        if (ugd->app_count <= 0) {
                LOC_LOG("There is no location application in DB");
@@ -133,10 +144,6 @@ int setting_location_get_location_app_list(Evas_Object *genlist, struct ug_data
 
        if (ugd->app_count == 1 && (strcmp(app_list[0].package, "org.tizen.setting") == 0)) {
                LOC_LOG("Setting application is only one location application");
-               ugd->itc_line = NULL;
-               ugd->itc_msg = NULL;
-               ugd->gi_msg = NULL;
-               ugd->gi_line = NULL;
                return TRUE;
        }
 
index a6c7fd1..82b133c 100644 (file)
@@ -66,7 +66,7 @@ void setting_location_check_di(void *data)
 
        elm_object_item_disabled_set(ugd->gi_mypos, !(ugd->is_gps || ugd->is_net));
 
-       if (ugd->app_count <= 1) {
+       if (ugd->app_info == NULL) {
                return;
        }
 
@@ -97,15 +97,13 @@ static void setting_location_back_cb(void *data, Evas_Object * obj, void *event_
        setting_location_free_itc(ugd->itc_mypos);
        setting_location_free_itc(ugd->itc_msg);
        setting_location_free_itc(ugd->itc_line);
-        if (ugd->app_count > 1) {
+        if (ugd->app_info != NULL) {
                for (i = 0; i < ugd->app_count; i++) {
                        setting_location_free_itc(ugd->app_info[i].itc_app);
                }
-       }
-
-       if (ugd->app_info != NULL) {
                free(ugd->app_info);
        }
+
        ug_destroy_me(ugd->ug);
 }