diff options
author | Junghyun Yeon <jungh.yeon@samsung.com> | 2016-12-16 17:29:51 +0900 |
---|---|---|
committer | Junghyun Yeon <jungh.yeon@samsung.com> | 2016-12-16 17:29:51 +0900 |
commit | 26161645fd6d7987a03a7cc0bf6dfcbaaf6c4572 (patch) | |
tree | c292e5ff9394e260c5eba3525caf81364e968bbb | |
parent | 2929c1229fcbfeedf39d0bc5c06cf163e4f73efb (diff) | |
download | app-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 |
Fix when remove app event callback from listsubmit/tizen_3.0/20161216.082724submit/tizen_3.0.m2/20170104.093748accepted/tizen/3.0/wearable/20161219.095451accepted/tizen/3.0/tv/20161219.074014accepted/tizen/3.0/ivi/20161219.071339accepted/tizen/3.0/common/20161219.113518accepted/tizen/3.0.m2/wearable/20170104.101032accepted/tizen/3.0.m2/tv/20170104.100429accepted/tizen/3.0.m2/mobile/20170104.100256tizen_3.0.m2accepted/tizen_3.0.m2_wearableaccepted/tizen_3.0.m2_tvaccepted/tizen_3.0.m2_mobile
- 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.c | 9 |
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; |