Skip to content

Commit 0879a66

Browse files
committed
MEM: just release a refcount on overview datasets when destroying main dataset
1 parent 2c04056 commit 0879a66

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

frmts/mem/memdataset.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -907,7 +907,7 @@ CPLErr MEMDataset::IBuildOverviews(const char *pszResampling, int nOverviews,
907907
return CE_Failure;
908908
}
909909
}
910-
m_apoOverviewDS.emplace_back(std::move(poOvrDS));
910+
m_apoOverviewDS.emplace_back(poOvrDS.release());
911911
}
912912
}
913913

@@ -1089,7 +1089,7 @@ std::unique_ptr<GDALDataset> MEMDataset::Clone(int nScopeFlags,
10891089
for (const auto &poOvrDS : m_apoOverviewDS)
10901090
{
10911091
poNewDS->m_apoOverviewDS.emplace_back(
1092-
poOvrDS->Clone(nScopeFlags, bCanShareState));
1092+
poOvrDS->Clone(nScopeFlags, bCanShareState).release());
10931093
}
10941094

10951095
poNewDS->SetDescription(GetDescription());

frmts/mem/memdataset.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,10 @@ class CPL_DLL MEMDataset CPL_NON_FINAL : public GDALDataset
5252
std::vector<gdal::GCP> m_aoGCPs{};
5353
OGRSpatialReference m_oGCPSRS{};
5454

55-
std::vector<std::unique_ptr<GDALDataset>> m_apoOverviewDS{};
55+
using GDALDatasetRefCountedPtr =
56+
std::unique_ptr<GDALDataset, GDALDatasetUniquePtrReleaser>;
57+
58+
std::vector<GDALDatasetRefCountedPtr> m_apoOverviewDS{};
5659

5760
struct Private;
5861
std::unique_ptr<Private> m_poPrivate;

0 commit comments

Comments
 (0)