From 6bfae0b7ab0641214f459287e7120ef76c48bbef Mon Sep 17 00:00:00 2001 From: "jungmin76.park" Date: Mon, 1 Jul 2013 16:06:05 +0900 Subject: [PATCH] fix memory leak(merged from tizen_2.2) Change-Id: Ic1867911852f8c07ebdaae08ecfd6ad226ad71bf Signed-off-by: jungmin76.park --- src/app/FApp_ServiceAppImpl.cpp | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/app/FApp_ServiceAppImpl.cpp b/src/app/FApp_ServiceAppImpl.cpp index 9dcafdd..d4011cd 100644 --- a/src/app/FApp_ServiceAppImpl.cpp +++ b/src/app/FApp_ServiceAppImpl.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include @@ -372,21 +373,26 @@ _ServiceAppImpl::ResetLifeDurationTimer(void) int _ServiceAppImpl::GetPrivilegeLevel(void) { - const AppId appId = _AppInfo::GetApplicationId(); + static int visibility = _API_VISIBILITY_NONE; + if( visibility == _API_VISIBILITY_NONE) + { + const AppId appId = _AppInfo::GetApplicationId(); - _PackageManagerImpl* pPkg = _PackageManagerImpl::GetInstance(); - SysTryReturn(NID_APP, pPkg != null, _API_VISIBILITY_PUBLIC, E_INVALID_STATE, "Invalid PackageManager instance."); + _PackageManagerImpl* pPkg = _PackageManagerImpl::GetInstance(); + SysTryReturn(NID_APP, pPkg != null, _API_VISIBILITY_PUBLIC, E_INVALID_STATE, "Invalid PackageManager instance."); - String pkgId = _PackageManagerImpl::GetPackageIdByAppId(appId); - SysTryReturn(NID_APP, !pkgId.IsEmpty(), _API_VISIBILITY_PUBLIC, E_INVALID_STATE, "Invalid appId(%ls).", appId.GetPointer() ); + String pkgId = _PackageManagerImpl::GetPackageIdByAppId(appId); + SysTryReturn(NID_APP, !pkgId.IsEmpty(), _API_VISIBILITY_PUBLIC, E_INVALID_STATE, "Invalid appId(%ls).", appId.GetPointer() ); - PackageInfo* pInfo = pPkg->GetPackageInfoN(pkgId); - SysTryReturn(NID_APP, pInfo != null, _API_VISIBILITY_PUBLIC, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + std::unique_ptr pPkgInfo (pPkg->GetPackageInfoN(pkgId) ); + SysTryReturn(NID_APP, pPkgInfo != null, _API_VISIBILITY_PUBLIC, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); - const _PackageInfoImpl* pPkgInfo = _PackageInfoImpl::GetInstance(pInfo); - SysTryReturn(NID_APP, pPkgInfo != null, _API_VISIBILITY_PUBLIC, E_INVALID_STATE, "Invalid PackageInfo instance."); + const _PackageInfoImpl* pPkgInfoImpl = _PackageInfoImpl::GetInstance(pPkgInfo.get()); + SysTryReturn(NID_APP, pPkgInfoImpl != null, _API_VISIBILITY_PUBLIC, E_INVALID_STATE, "Invalid PackageInfo instance."); - return pPkgInfo->GetApiVisibility(); + visibility = pPkgInfoImpl->GetApiVisibility(); + } + return visibility; } } } //Tizen::App -- 2.7.4