summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunghyun Yeon <jungh.yeon@samsung.com>2016-12-16 17:29:51 +0900
committerJunghyun Yeon <jungh.yeon@samsung.com>2016-12-16 17:29:51 +0900
commit26161645fd6d7987a03a7cc0bf6dfcbaaf6c4572 (patch)
treec292e5ff9394e260c5eba3525caf81364e968bbb
parent2929c1229fcbfeedf39d0bc5c06cf163e4f73efb (diff)
downloadapp-manager-accepted/tizen_3.0.m2_wearable.tar.gz
app-manager-accepted/tizen_3.0.m2_wearable.tar.bz2
app-manager-accepted/tizen_3.0.m2_wearable.zip
- Consider when first callback has to be removed Change-Id: I7beaa8871005203539256566e4aeccb801292ede Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
-rw-r--r--src/app_manager_event.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/app_manager_event.c b/src/app_manager_event.c
index fcdea81..a5dc931 100644
--- a/src/app_manager_event.c
+++ b/src/app_manager_event.c
@@ -25,20 +25,21 @@
#define LOG_TAG "CAPI_APPFW_APP_MANAGER"
-static int __remove_app_manager_event_info(app_manager_event_info *head, int req_id)
+static int __remove_app_manager_event_info(app_manager_event_info **head, int req_id)
{
app_manager_event_info *prev;
app_manager_event_info *current;
- current = prev = head;
+ current = prev = *head;
if (current == NULL)
return APP_MANAGER_ERROR_INVALID_PARAMETER;
while (current) {
if (current->req_id == req_id) {
+ if (prev == current)
+ *head = current->next;
prev->next = current->next;
free(current);
- current = NULL;
return APP_MANAGER_ERROR_NONE;
}
prev = current;
@@ -166,7 +167,7 @@ int app_event_handler(uid_t target_uid, int req_id,
app_evt->event_cb(pkg_type, appid, event_type,
APP_MANAGER_EVENT_STATE_FAILED, app_evt, app_evt->user_data);
- ret = __remove_app_manager_event_info(app_evt->head, req_id);
+ ret = __remove_app_manager_event_info(&(app_evt->head), req_id);
if (ret != APP_MANAGER_ERROR_NONE) {
LOGE("failed to remove app event info");
return APP_MANAGER_ERROR_REQUEST_FAILED;