Fix prevent issue for package manager
[platform/framework/native/appfw.git] / src / app / package / FAppPkg_PackageInfoImpl.cpp
index 47478e4..4750878 100755 (executable)
@@ -322,10 +322,10 @@ _PackageInfoImpl::GetPackageAppInfoListN(void)
                        PackageAppInfo* pPackageAppInfo = dynamic_cast <PackageAppInfo*>(__pPackageAppInfoList->GetAt(i));
                        if (pPackageAppInfo)
                        {
-                               PackageAppInfo* pInfo = new (std::nothrow) PackageAppInfo;
+                               std::unique_ptr< PackageAppInfo > pInfo(new (std::nothrow) PackageAppInfo);
                                SysTryReturn(NID_APP, pInfo, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
 
-                               _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pInfo);
+                               _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pInfo.get());
                                SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null.");
 
                                AppId appId = pPackageAppInfo->GetAppId();
@@ -340,7 +340,7 @@ _PackageInfoImpl::GetPackageAppInfoListN(void)
                                pPackageAppInfoImpl->SetMenuIconVisible(menuIconVisible);
                                pPackageAppInfoImpl->SetMainApp(mainApp);
 
-                               r = pList->Add(*pInfo);
+                               r = pList->Add(*pInfo.release());
                        }
                 }
        }
@@ -392,24 +392,29 @@ _PackageInfoImpl::GetPackageAppInfoN(const AppId& appId) const
                                        continue;
                                }
 
-                               PackageAppInfo* pInfo = new (std::nothrow) PackageAppInfo;
+                               _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo);
+                               SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null.");
+
+                               std::unique_ptr< PackageAppInfo > pInfo(new (std::nothrow) PackageAppInfo);
                                SysTryReturn(NID_APP, pInfo, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Insufficient memory");
 
-                               _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pInfo);
-                               SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null.");
+                               _PackageAppInfoImpl* pImpl = _PackageAppInfoImpl::GetInstance(pInfo.get());
+                               SysTryReturn(NID_APP, pImpl, null, E_SYSTEM, "pImpl is null.");
 
                                String appName = pPackageAppInfo->GetAppName();
                                String appDisplayName = pPackageAppInfo->GetAppDisplayName();
                                bool menuIconVisible = pPackageAppInfo->IsMenuIconVisible();
                                bool mainApp = pPackageAppInfo->IsMainApp();
+                               String tempIconPath = pPackageAppInfoImpl->GetAppTempIconPath();
 
-                               pPackageAppInfoImpl->SetAppId(appId);
-                               pPackageAppInfoImpl->SetAppName(appName);
-                               pPackageAppInfoImpl->SetAppDisplayName(appDisplayName);
-                               pPackageAppInfoImpl->SetMenuIconVisible(menuIconVisible);
-                               pPackageAppInfoImpl->SetMainApp(mainApp);
+                               pImpl->SetAppId(appId);
+                               pImpl->SetAppName(appName);
+                               pImpl->SetAppDisplayName(appDisplayName);
+                               pImpl->SetMenuIconVisible(menuIconVisible);
+                               pImpl->SetMainApp(mainApp);
+                               pImpl->SetAppTempIconPath(tempIconPath);
 
-                               return pInfo;
+                               return pInfo.release();
                        }
                 }
        }