Fix memory leak 22/259522/2
authorHyunho <hhstark.kang@samsung.com>
Wed, 9 Jun 2021 08:32:30 +0000 (17:32 +0900)
committerHyunho <hhstark.kang@samsung.com>
Thu, 10 Jun 2021 01:39:06 +0000 (10:39 +0900)
Change-Id: I39d0d7207a3e576c92816f75b94327940a159b67
Signed-off-by: Hyunho <hhstark.kang@samsung.com>
src/widget_service.c

index 43edf75b244d294d2896bac672c127e13fef46cb..53a11ee07aa35514225969046157c1a9ca0d101d 100644 (file)
@@ -2261,28 +2261,25 @@ static char *__get_widget_main_appid_from_pkgid_or_appid(const char *id)
                ret = pkgmgrinfo_appinfo_get_appinfo(id, &appinfo);
                if (ret != PMINFO_R_OK) {
                        _E("Failed to get app/pkg info - %s", id);
-                       return NULL;
+                       goto end;
                }
 
                ret = pkgmgrinfo_appinfo_get_pkgid(appinfo, &pkgid);
                if (ret != PMINFO_R_OK) {
                        _E("Failed to get pkgid - %s", id);
-                       pkgmgrinfo_appinfo_destroy_appinfo(appinfo);
-                       return NULL;
+                       goto end;
                }
 
                ret = pkgmgrinfo_pkginfo_get_pkginfo(pkgid, &pkginfo);
                if (ret != PMINFO_R_OK) {
                        _E("Failed to get pkginfo - %s", id);
-                       pkgmgrinfo_appinfo_destroy_appinfo(appinfo);
-                       return NULL;
+                       goto end;
                }
 
                new_pkgid = strdup(pkgid);
-               pkgmgrinfo_appinfo_destroy_appinfo(appinfo);
                if (new_pkgid == NULL) {
                        _E("out of memory"); /* LCOV_EXCL_LINE */
-                       return NULL; /* LCOV_EXCL_LINE */
+                       goto end; /* LCOV_EXCL_LINE */
                }
                id = new_pkgid;
        }
@@ -2317,7 +2314,10 @@ static char *__get_widget_main_appid_from_pkgid_or_appid(const char *id)
        }
 
 end:
-       pkgmgrinfo_pkginfo_destroy_pkginfo(pkginfo);
+       if (pkginfo)
+               pkgmgrinfo_pkginfo_destroy_pkginfo(pkginfo);
+       if (appinfo)
+               pkgmgrinfo_appinfo_destroy_appinfo(appinfo);
        if (new_pkgid)
                free(new_pkgid);