}
int PkgFinder::FindPreloadPkgidFromDb(bool read_only) {
- int ret = 0;
- pkgmgrinfo_pkginfo_filter_h handle = nullptr;
+ int ret;
+ pkgmgrinfo_pkginfo_filter_h handle;
ret = pkgmgrinfo_pkginfo_filter_create(&handle);
if (ret != PMINFO_R_OK) {
return -1;
}
- ret = pkgmgrinfo_pkginfo_filter_add_bool(handle,
+ std::unique_ptr<std::remove_pointer<pkgmgrinfo_pkginfo_filter_h>::type,
+ decltype(pkgmgrinfo_pkginfo_filter_destroy)*> handle_auto(
+ handle, pkgmgrinfo_pkginfo_filter_destroy);
+
+ ret = pkgmgrinfo_pkginfo_filter_add_bool(handle_auto.get(),
PMINFO_PKGINFO_PROP_PACKAGE_PRELOAD, 1);
if (ret != PMINFO_R_OK) {
LOG(ERROR) << "pkgmgrinfo_pkginfo_filter_add_bool failed " << ret;
return -1;
}
- ret = pkgmgrinfo_pkginfo_filter_add_bool(handle,
+ ret = pkgmgrinfo_pkginfo_filter_add_bool(handle_auto.get(),
PMINFO_PKGINFO_PROP_PACKAGE_READONLY, read_only ? 1 : 0);
if (ret != PMINFO_R_OK) {
LOG(ERROR) << "pkgmgrinfo_pkginfo_filter_add_bool failed " << ret;
}
read_only_ = read_only;
- ret = pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle,
+ ret = pkgmgrinfo_pkginfo_filter_foreach_pkginfo(handle_auto.get(),
PkgidListCb, this);
if (ret != PMINFO_R_OK) {
LOG(ERROR) << "pkgmgrinfo_pkginfo_filter_foreach_pkginfo failed " << ret;
return -1;
}
- ret = pkgmgrinfo_pkginfo_filter_destroy(handle);
- if (ret != PMINFO_R_OK) {
- LOG(ERROR) << "pkgmgrinfo_pkginfo_filter_destroy failed " << ret;
- return -1;
- }
-
return 0;
}