Change behavior of app_info_create correctly 45/91145/1
authorJunghyun Yeon <jungh.yeon@samsung.com>
Thu, 6 Oct 2016 05:39:39 +0000 (14:39 +0900)
committerJunghyun Yeon <jungh.yeon@samsung.com>
Thu, 6 Oct 2016 05:39:39 +0000 (14:39 +0900)
- 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>
src/app_info.c

index 919e96d..7c89093 100644 (file)
@@ -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);
-
+       }\r
        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);
        }