Fix prevent issue for package manager
authorDuyoung Jang <duyoung.jang@samsung.com>
Fri, 5 Apr 2013 08:43:03 +0000 (17:43 +0900)
committerDuyoung Jang <duyoung.jang@samsung.com>
Fri, 5 Apr 2013 08:43:03 +0000 (17:43 +0900)
Change-Id: Ibada278845c6abd9beca8a0b3873970be7566fad
Signed-off-by: Duyoung Jang <duyoung.jang@samsung.com>
src/app/package/FAppPkg_PackageAppInfoImpl.cpp
src/app/package/FAppPkg_PackageInfoImpl.cpp
src/app/package/FAppPkg_PackageManagerImpl.cpp

index c423671..ac447b9 100755 (executable)
@@ -466,7 +466,8 @@ _PackageAppInfoImpl::MetadataHandler(const char* pKey, const char* pValue, void*
        SysLog(NID_APP, "Key = [%s], Value = [%s]", pKey, pValue);
 
        MultiHashMap* pMultiMap = (MultiHashMap*) pUserData;
-       pMultiMap->Add(*(new (std::nothrow) String(pKey)), *(new (std::nothrow) String(pValue)));
+       result r = pMultiMap->Add(*(new (std::nothrow) String(pKey)), *(new (std::nothrow) String(pValue)));
+       SysTryReturn(NID_APP, r == E_SUCCESS, -1, E_SYSTEM, "pMultiMap->Add() failed. [%s]", GetErrorMessage(GetLastResult()));
 
        return 0;
 }
index 40421d2..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());
                        }
                 }
        }
@@ -395,10 +395,10 @@ _PackageInfoImpl::GetPackageAppInfoN(const AppId& appId) const
                                _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo);
                                SysTryReturn(NID_APP, pPackageAppInfoImpl, null, E_SYSTEM, "pPackageAppInfoImpl is null.");
 
-                               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* pImpl = _PackageAppInfoImpl::GetInstance(pInfo);
+                               _PackageAppInfoImpl* pImpl = _PackageAppInfoImpl::GetInstance(pInfo.get());
                                SysTryReturn(NID_APP, pImpl, null, E_SYSTEM, "pImpl is null.");
 
                                String appName = pPackageAppInfo->GetAppName();
@@ -414,7 +414,7 @@ _PackageInfoImpl::GetPackageAppInfoN(const AppId& appId) const
                                pImpl->SetMainApp(mainApp);
                                pImpl->SetAppTempIconPath(tempIconPath);
 
-                               return pInfo;
+                               return pInfo.release();
                        }
                 }
        }
index 398ec66..156f074 100755 (executable)
@@ -729,6 +729,7 @@ _PackageManagerImpl::GetPackageInfoFromFileN(const String& filePath) const
        SysLog(NID_APP, "packagePath = [%s], extension = [%s]", pPackagePath.get(), pExtension.get());
 
        bool res = true;
+       result r = E_SUCCESS;
 
        if (strcasecmp(pExtension.get(), "tpk") == 0)
        {
@@ -779,25 +780,32 @@ _PackageManagerImpl::GetPackageInfoFromFileN(const String& filePath) const
                }
 
                std::unique_ptr< PackageAppInfo > pPackageAppInfo(new (std::nothrow) PackageAppInfo);
-               SysTryReturn(NID_APP, pPackageAppInfo, null, E_OUT_OF_MEMORY, "pPackageAppInfo instance must not be null.");
+               if (pPackageAppInfo)
+               {
+                       _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo.get());
 
-               _PackageAppInfoImpl* pPackageAppInfoImpl = _PackageAppInfoImpl::GetInstance(pPackageAppInfo.get());
+                       pPackageAppInfoImpl->SetAppId(pPkgInfo->pkg_name);
+                       pPackageAppInfoImpl->SetAppName(pPkgInfo->label);
+                       pPackageAppInfoImpl->SetAppDisplayName(pPkgInfo->label);
+                       pPackageAppInfoImpl->SetMainApp(true);
+                       if ((pPkgInfo->icon_buf) && (pPkgInfo->icon_size > 0))
+                       {
+                               String iconPath("/tmp/icon.png");
+                               File file;
+                               r = file.Construct(iconPath, "w+");
+                               r = file.Write(pPkgInfo->icon_buf, pPkgInfo->icon_size);
 
-               pPackageAppInfoImpl->SetAppId(pPkgInfo->pkg_name);
-               pPackageAppInfoImpl->SetAppName(pPkgInfo->label);
-               pPackageAppInfoImpl->SetAppDisplayName(pPkgInfo->label);
-               pPackageAppInfoImpl->SetMainApp(true);
-               if ((pPkgInfo->icon_buf) && (pPkgInfo->icon_size > 0))
-               {
-                       String iconPath("/tmp/icon.png");
-                       File file;
-                       file.Construct(iconPath, "w+");
-                       file.Write(pPkgInfo->icon_buf, pPkgInfo->icon_size);
+                               pPackageAppInfoImpl->SetAppTempIconPath(iconPath);
+                       }
 
-                       pPackageAppInfoImpl->SetAppTempIconPath(iconPath);
+                       pPackageInfoImpl->AddPackageAppInfo(*pPackageAppInfo.release());
+               }
+               else
+               {
+                       SysLog(NID_APP, "pPackageAppInfo instance must not be null.");
+                       pkgmgr_client_free_pkginfo(pPkgmgrInfo);
+                       return null;
                }
-
-               pPackageInfoImpl->AddPackageAppInfo(*pPackageAppInfo.release());
 
                pkgmgr_client_free_pkginfo(pPkgmgrInfo);
        }
@@ -922,10 +930,10 @@ _PackageManagerImpl::GetPackageAppInfoListN(const IMap& packageAppFilterMap) con
        pkgmgrinfo_appinfo_metadata_filter_h metaHandle = null;
 
        res = pkgmgrinfo_appinfo_filter_create(&handle);
-       SysTryReturn(NID_APP, res == PMINFO_R_OK, null, E_SYSTEM, "pkgmgrinfo_appinfo_filter_create() is failed. [%d]", res);
+       SysTryCatch(NID_APP, res == PMINFO_R_OK, , E_SYSTEM, "pkgmgrinfo_appinfo_filter_create() is failed. [%d]", res);
 
        res = pkgmgrinfo_appinfo_metadata_filter_create(&metaHandle);
-       SysTryReturn(NID_APP, res == PMINFO_R_OK, null, E_SYSTEM, "pkgmgrinfo_appinfo_metadata_filter_create() is failed. [%d]", res);
+       SysTryCatch(NID_APP, res == PMINFO_R_OK, , E_SYSTEM, "pkgmgrinfo_appinfo_metadata_filter_create() is failed. [%d]", res);
 
        while(pEnum->MoveNext() == E_SUCCESS)
        {
@@ -1435,14 +1443,15 @@ _PackageManagerImpl::PackageInfoEventHandler(const pkgmgrinfo_pkginfo_h handle,
 {
        SysTryReturn(NID_APP, handle != null, 0, E_SYSTEM, "[E_SYSTEM] handle must not be null.");
 
+       result r = E_SUCCESS;
        int result = 0;
        char* pPackage = null;
        ArrayList* pList = (ArrayList*)pUserData;
 
-       PackageInfo *pPackageInfo = new (std::nothrow) PackageInfo;
-       SysTryReturn(NID_APP, pPackageInfo != null, 0, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] pPackageInfo instance must not be null.");
+       std::unique_ptr< PackageInfo > pPackageInfo(new (std::nothrow) PackageInfo);
+       SysTryReturn(NID_APP, pPackageInfo, null, E_OUT_OF_MEMORY, "pPackageInfo instance must not be null.");
 
-       _PackageInfoImpl* pPackageInfoImpl = _PackageInfoImpl::GetInstance(pPackageInfo);
+       _PackageInfoImpl* pPackageInfoImpl = _PackageInfoImpl::GetInstance(pPackageInfo.get());
 
        result = pkgmgrinfo_pkginfo_get_pkgname(handle, &pPackage);
        if (result == 0)
@@ -1454,8 +1463,11 @@ _PackageManagerImpl::PackageInfoEventHandler(const pkgmgrinfo_pkginfo_h handle,
                SysLog(NID_APP, "pkgmgrinfo_pkginfo_get_pkgname() is failed. result = [%d]", result);
        }
 
-       pPackageInfoImpl->Construct(pPackage);
-       pList->Add(*pPackageInfo);
+       r = pPackageInfoImpl->Construct(pPackage);
+       SysTryReturn(NID_APP, r == E_SUCCESS, -1, E_SYSTEM, "pPackageInfoImpl->Construct() failed.");
+
+       r = pList->Add(*pPackageInfo.release());
+       SysTryReturn(NID_APP, r == E_SUCCESS, -1, E_SYSTEM, "pList->Add() failed.");
 
        return result;
 }