diff --git a/Modules/IO/IOGDAL/src/otbDEMHandler.cxx b/Modules/IO/IOGDAL/src/otbDEMHandler.cxx index d91621e2263bf00ba7e3df56a6e7b6acc66d30c8..991e454668e10c12cf54bddbef9176dbeb1e900a 100644 --- a/Modules/IO/IOGDAL/src/otbDEMHandler.cxx +++ b/Modules/IO/IOGDAL/src/otbDEMHandler.cxx @@ -138,7 +138,11 @@ DEMHandler::DEMHandler() : m_Dataset(nullptr), DEMHandler::~DEMHandler() { - GDALClose(m_GeoidDS); + if (m_GeoidDS) + { + GDALClose(m_GeoidDS); + } + ClearDEMs(); } @@ -180,16 +184,15 @@ void DEMHandler::OpenDEMDirectory(const std::string& DEMDirectory) } else { - auto vrtDatasetList = new GDALDatasetH[vrtSize]; + std::vector<GDALDatasetH> vrtDatasetList(vrtSize); for (int i = 0; i < vrtSize; i++) { vrtDatasetList[i] = m_DatasetList[i]->GetDataSet(); } - m_Dataset = (GDALDataset *) GDALBuildVRT(nullptr, vrtSize, vrtDatasetList, - nullptr, nullptr, nullptr); + m_Dataset = static_cast<GDALDataset *> (GDALBuildVRT(nullptr, vrtSize, vrtDatasetList.data(), + nullptr, nullptr, nullptr)); m_DEMDirectories.push_back(DEMDirectory); - delete[] vrtDatasetList; } }