summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunghyun Yeon <jungh.yeon@samsung.com>2016-10-06 14:39:39 +0900
committerJunghyun Yeon <jungh.yeon@samsung.com>2016-10-06 14:39:39 +0900
commitdc6c6ae2937d59a66d5b3718747d77f909f97401 (patch)
tree7e382aebf8337f35e65c025761348192f09597c6
parent6a6b68d975ddb2aa13e6cc14f4d2e9a3250fa1b5 (diff)
downloadapp-manager-dc6c6ae2937d59a66d5b3718747d77f909f97401.tar.gz
app-manager-dc6c6ae2937d59a66d5b3718747d77f909f97401.tar.bz2
app-manager-dc6c6ae2937d59a66d5b3718747d77f909f97401.zip
Change behavior of app_info_create correctly
- Changed to getting appinfo based on appid first - If it fails, treat appid as pkgid and try to get appinfo of mainapp of pkg Change-Id: I3785bd17f529dc11e3a39ae46b721be6aa44b1f1 Signed-off-by: Junghyun Yeon <jungh.yeon@samsung.com>
-rw-r--r--src/app_info.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/app_info.c b/src/app_info.c
index 919e96d..7c89093 100644
--- a/src/app_info.c
+++ b/src/app_info.c
@@ -226,25 +226,29 @@ API int app_info_create(const char *app_id, app_info_h *app_info)
if (info == NULL)
return app_manager_error(APP_MANAGER_ERROR_OUT_OF_MEMORY, __FUNCTION__, NULL);
- retval = pkgmgrinfo_pkginfo_get_usr_pkginfo(app_id, getuid(), &pkginfo);
- if (retval < 0) {
- if (pkgmgrinfo_appinfo_get_usr_appinfo(app_id, getuid(), &appinfo)) {
- free(info);
- return app_manager_error(APP_MANAGER_ERROR_NO_SUCH_APP, __FUNCTION__, NULL);
- }
-
+ retval = pkgmgrinfo_appinfo_get_usr_appinfo(app_id, getuid(), &appinfo);
+ if (!retval) {
info->app_id = strdup(app_id);
info->pkg_app_info = appinfo;
*app_info = info;
return APP_MANAGER_ERROR_NONE;
}
+ retval = pkgmgrinfo_pkginfo_get_usr_pkginfo(app_id, getuid(), &pkginfo);
+ if (retval < 0) {
+ free(info);
+ return app_manager_error(APP_MANAGER_ERROR_NO_SUCH_APP, __FUNCTION__, NULL);
+ }
+
retval = pkgmgrinfo_pkginfo_get_mainappid(pkginfo, &main_appid);
- if (retval < 0)
+ if (retval < 0) {
+ free(info);
+ pkgmgrinfo_pkginfo_destroy_pkginfo(pkginfo);
app_manager_error(APP_MANAGER_ERROR_NO_SUCH_APP, __FUNCTION__, NULL);
-
+ }
if (pkgmgrinfo_appinfo_get_usr_appinfo(main_appid, getuid(), &appinfo)) {
free(info);
+ pkgmgrinfo_pkginfo_destroy_pkginfo(pkginfo);
return app_manager_error(APP_MANAGER_ERROR_NO_SUCH_APP, __FUNCTION__, NULL);
}