From bae26a719d7a40ab2e82f7a8e09c0a53d65fd25b Mon Sep 17 00:00:00 2001 From: Sangyoon Jang Date: Thu, 18 Oct 2018 21:01:01 +0900 Subject: [PATCH] Fix a bug of package_info_foreach_privilege_info The return type of foreach callback is bool, but internal callback is int. Sometimes this cause unexpected result so we should not pass foreach callback into internal API directly. Change-Id: Ibbe071abacf955dd9e20839898d02143f503541b Signed-off-by: Sangyoon Jang --- src/package_info.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/package_info.c b/src/package_info.c index 44a8715..8c2fdb6 100644 --- a/src/package_info.c +++ b/src/package_info.c @@ -52,6 +52,11 @@ typedef struct _foreach_updateinfo_ { void *user_data; } foreach_updateinfo_context_s; +typedef struct _foreach_privilege_ { + package_info_privilege_info_cb callback; + void *user_data; +} foreach_privilege_s; + static int package_info_foreach_updateinfo_cb(const pkgmgrinfo_updateinfo_h handle, void *user_data) { foreach_updateinfo_context_s *foreach_updateinfo = user_data; @@ -536,14 +541,28 @@ API int package_info_foreach_cert_info(package_info_h package_info, package_info return PACKAGE_MANAGER_ERROR_NONE; } +static int package_info_foreach_privilege_cb(const char *privilege_name, void *user_data) +{ + foreach_privilege_s *foreach_privilege = (foreach_privilege_s *)user_data; + + if (!foreach_privilege->callback(privilege_name, foreach_privilege->user_data)) + return -1; + else + return 0; +} + API int package_info_foreach_privilege_info(package_info_h package_info, package_info_privilege_info_cb callback, void *user_data) { int ret = 0; + foreach_privilege_s foreach_privilege = { + .callback = callback, + .user_data = user_data, + }; if (package_info == NULL || callback == NULL) return package_manager_error(PACKAGE_MANAGER_ERROR_INVALID_PARAMETER, __FUNCTION__, NULL); - ret = pkgmgrinfo_pkginfo_foreach_privilege(package_info->pkgmgr_pkginfo, (pkgmgrinfo_pkg_privilege_list_cb)callback, user_data); + ret = pkgmgrinfo_pkginfo_foreach_privilege(package_info->pkgmgr_pkginfo, package_info_foreach_privilege_cb, &foreach_privilege); return ret; } -- 2.7.4