Skip to content
Snippets Groups Projects
Commit 475c0bf0 authored by Dmitri Naumov's avatar Dmitri Naumov
Browse files

[App/IO] Raster; Avoid use after move. Use vector.

Using std::vector local variable avoids possible
use after move: access to header.n_cols and n_rows
in the same line as std::move(header).
parent 13672f6d
No related branches found
No related tags found
No related merge requests found
...@@ -51,7 +51,7 @@ GeoLib::Raster* AsciiRasterInterface::getRasterFromASCFile(std::string const& fn ...@@ -51,7 +51,7 @@ GeoLib::Raster* AsciiRasterInterface::getRasterFromASCFile(std::string const& fn
// header information // header information
GeoLib::RasterHeader header; GeoLib::RasterHeader header;
if (readASCHeader(in, header)) { if (readASCHeader(in, header)) {
auto* values = new double[header.n_cols * header.n_rows]; std::vector<double> values(header.n_cols * header.n_rows);
std::string s; std::string s;
// read the data into the double-array // read the data into the double-array
for (std::size_t j(0); j < header.n_rows; ++j) { for (std::size_t j(0); j < header.n_rows; ++j) {
...@@ -64,8 +64,8 @@ GeoLib::Raster* AsciiRasterInterface::getRasterFromASCFile(std::string const& fn ...@@ -64,8 +64,8 @@ GeoLib::Raster* AsciiRasterInterface::getRasterFromASCFile(std::string const& fn
} }
in.close(); in.close();
GeoLib::Raster* raster(new GeoLib::Raster( GeoLib::Raster* raster(new GeoLib::Raster(
std::move(header), values, values + header.n_cols * header.n_rows)); std::move(header), values.data(), values.data() + values.size()));
delete [] values;
return raster; return raster;
} }
WARN("Raster::getRasterFromASCFile(): Could not read header of file {:s}", WARN("Raster::getRasterFromASCFile(): Could not read header of file {:s}",
...@@ -172,7 +172,7 @@ GeoLib::Raster* AsciiRasterInterface::getRasterFromSurferFile(std::string const& ...@@ -172,7 +172,7 @@ GeoLib::Raster* AsciiRasterInterface::getRasterFromSurferFile(std::string const&
if (readSurferHeader(in, header, min, max)) if (readSurferHeader(in, header, min, max))
{ {
const double no_data_val (min-1); const double no_data_val (min-1);
auto* values = new double[header.n_cols * header.n_rows]; std::vector<double> values(header.n_cols * header.n_rows);
std::string s; std::string s;
// read the data into the double-array // read the data into the double-array
for (std::size_t j(0); j < header.n_rows; ++j) for (std::size_t j(0); j < header.n_rows; ++j)
...@@ -188,8 +188,8 @@ GeoLib::Raster* AsciiRasterInterface::getRasterFromSurferFile(std::string const& ...@@ -188,8 +188,8 @@ GeoLib::Raster* AsciiRasterInterface::getRasterFromSurferFile(std::string const&
} }
in.close(); in.close();
GeoLib::Raster* raster(new GeoLib::Raster( GeoLib::Raster* raster(new GeoLib::Raster(
std::move(header), values, values + header.n_cols * header.n_rows)); std::move(header), values.data(), values.data() + values.size()));
delete [] values;
return raster; return raster;
} }
ERR("Raster::getRasterFromASCFile() - could not read header of file {:s}", ERR("Raster::getRasterFromASCFile() - could not read header of file {:s}",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment