Handle allocated memory
authorIlho Kim <ilho159.kim@samsung.com>
Wed, 10 Feb 2021 03:14:28 +0000 (12:14 +0900)
committer김일호/Tizen Platform Lab(SR)/Engineer/삼성전자 <ilho159.kim@samsung.com>
Tue, 16 Feb 2021 09:22:33 +0000 (18:22 +0900)
Signed-off-by: Ilho Kim <ilho159.kim@samsung.com>
src/common/parcel/appinfo_parcelable.cc
src/common/parcel/appinfo_parcelable.hh
src/common/parcel/pkginfo_parcelable.cc
src/common/parcel/pkginfo_parcelable.hh

index 5153201..eb169ed 100644 (file)
@@ -380,7 +380,13 @@ void AppInfoParcelable::ReadSplashscreens(tizen_base::Parcel* parcel, GList** li
 AppInfoParcelable::AppInfoParcelable(std::vector<application_x *>&& app_list)
     : app_list_(std::move(app_list)) {}
 
-const std::vector<application_x *> AppInfoParcelable::GetAppInfo() {
+AppInfoParcelable::~AppInfoParcelable() {
+  for (auto app : app_list_) {
+    pkgmgrinfo_basic_free_application(app);
+  }
+}
+
+const std::vector<application_x *>& AppInfoParcelable::GetAppInfo() {
   return app_list_;
 }
 
index 959ee7d..4346154 100644 (file)
@@ -23,7 +23,8 @@ class EXPORT_API AppInfoParcelable : public AbstractParcelable {
 
   AppInfoParcelable() = default;
   AppInfoParcelable(std::vector<application_x *>&& app_list);
-  const std::vector<application_x *> GetAppInfo();
+  ~AppInfoParcelable();
+  const std::vector<application_x *>& GetAppInfo();
 
   void WriteToParcel(tizen_base::Parcel* parcel) const override;
   void ReadFromParcel(tizen_base::Parcel* parcel) override;
index 2c0d5ee..464c1a4 100644 (file)
@@ -437,7 +437,13 @@ package_x *PkgInfoParcelable::ReadPackage(tizen_base::Parcel* parcel) {
 PkgInfoParcelable::PkgInfoParcelable(std::vector<package_x *>&& pkg_list)
     : pkg_list_(std::move(pkg_list)) {}
 
-const std::vector<package_x *> PkgInfoParcelable::GetPkgInfo() {
+PkgInfoParcelable::~PkgInfoParcelable() {
+  for (auto pkg : pkg_list_) {
+    pkgmgrinfo_basic_free_package(pkg);
+  }
+}
+
+const std::vector<package_x *>& PkgInfoParcelable::GetPkgInfo() {
   return pkg_list_;
 }
 
index f0232f3..a30a31f 100644 (file)
@@ -23,7 +23,8 @@ class EXPORT_API PkgInfoParcelable : public AbstractParcelable {
 
   PkgInfoParcelable() = default;
   PkgInfoParcelable(std::vector<package_x *>&& pkg_list);
-  const std::vector<package_x *> GetPkgInfo();
+  ~PkgInfoParcelable();
+  const std::vector<package_x *>& GetPkgInfo();
 
   void WriteToParcel(tizen_base::Parcel* parcel) const override;
   void ReadFromParcel(tizen_base::Parcel* parcel) override;