From dbccd206c204753b06c6f438255d44fc8e16ba0d Mon Sep 17 00:00:00 2001 From: Nicklas Larsson Date: Fri, 4 Sep 2026 18:59:11 +0200 Subject: [PATCH] r.in.pdal: fix new Coverity Scan issues introduced with 1c684328ebea801f9838e5723bccd4af6b12001e - Uncaught exception of PointView::setField (CID 1685510) - Move reproject_option instead of passed-by-value for reproject->setOptions (CID1685509) --- raster/r.in.pdal/info.cpp | 75 ++++++++++++++++++++------------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/raster/r.in.pdal/info.cpp b/raster/r.in.pdal/info.cpp index 54d5acf0c2d..decdab9025d 100644 --- a/raster/r.in.pdal/info.cpp +++ b/raster/r.in.pdal/info.cpp @@ -8,6 +8,7 @@ * */ #include +#include #include #include @@ -137,49 +138,49 @@ void get_reprojected_extent(pdal::SpatialReference &spatial_reference, // Generate points along the 4 edges of the bounding box // First point of each edge starts at the corner and // the last point is right before the corner - for (int i = 0; i < points_per_edge - 1; ++i) { - double t = i / (double)(points_per_edge - 1); + try { + for (int i = 0; i < points_per_edge - 1; ++i) { + double t = i / (double)(points_per_edge - 1); - // South edge (y = min_y) - view->setField(pdal::Dimension::Id::X, idx, - *min_x + t * (*max_x - *min_x)); - view->setField(pdal::Dimension::Id::Y, idx, *min_y); - view->setField(pdal::Dimension::Id::Z, idx, *min_z); - idx++; + // South edge (y = min_y) + view->setField(pdal::Dimension::Id::X, idx, + *min_x + t * (*max_x - *min_x)); + view->setField(pdal::Dimension::Id::Y, idx, *min_y); + view->setField(pdal::Dimension::Id::Z, idx, *min_z); + idx++; - // East edge (x = max_x) - view->setField(pdal::Dimension::Id::X, idx, *max_x); - view->setField(pdal::Dimension::Id::Y, idx, - *min_y + t * (*max_y - *min_y)); - view->setField(pdal::Dimension::Id::Z, idx, *max_z); - idx++; + // East edge (x = max_x) + view->setField(pdal::Dimension::Id::X, idx, *max_x); + view->setField(pdal::Dimension::Id::Y, idx, + *min_y + t * (*max_y - *min_y)); + view->setField(pdal::Dimension::Id::Z, idx, *max_z); + idx++; - // North edge (y = max_y) - view->setField(pdal::Dimension::Id::X, idx, - *max_x - t * (*max_x - *min_x)); - view->setField(pdal::Dimension::Id::Y, idx, *max_y); - view->setField(pdal::Dimension::Id::Z, idx, *min_z); - idx++; + // North edge (y = max_y) + view->setField(pdal::Dimension::Id::X, idx, + *max_x - t * (*max_x - *min_x)); + view->setField(pdal::Dimension::Id::Y, idx, *max_y); + view->setField(pdal::Dimension::Id::Z, idx, *min_z); + idx++; - // West edge (x = min_x) - view->setField(pdal::Dimension::Id::X, idx, *min_x); - view->setField(pdal::Dimension::Id::Y, idx, - *max_y - t * (*max_y - *min_y)); - view->setField(pdal::Dimension::Id::Z, idx, *max_z); - idx++; - } + // West edge (x = min_x) + view->setField(pdal::Dimension::Id::X, idx, *min_x); + view->setField(pdal::Dimension::Id::Y, idx, + *max_y - t * (*max_y - *min_y)); + view->setField(pdal::Dimension::Id::Z, idx, *max_z); + idx++; + } - pdal::BufferReader reader; - reader.addView(view); + pdal::BufferReader reader; + reader.addView(view); - pdal::StageFactory factory; - pdal::Stage *reproject = factory.createStage("filters.reprojection"); - pdal::Options reproject_options; - reproject_options.add("in_srs", spatial_reference.getWKT()); - reproject_options.add("out_srs", location_projection_as_wkt(false)); - reproject->setOptions(reproject_options); - reproject->setInput(reader); - try { + pdal::StageFactory factory; + pdal::Stage *reproject = factory.createStage("filters.reprojection"); + pdal::Options reproject_options; + reproject_options.add("in_srs", spatial_reference.getWKT()); + reproject_options.add("out_srs", location_projection_as_wkt(false)); + reproject->setOptions(std::move(reproject_options)); + reproject->setInput(reader); reproject->prepare(table); reproject->execute(table); }