From 6d3dd575ed7af1b7b0bf4a6c41c06e5498914044 Mon Sep 17 00:00:00 2001 From: Even Rouault Date: Tue, 4 Mar 2025 11:52:43 +0100 Subject: [PATCH] Fix Coverity Scan warnings --- autotest/cpp/testfloat16.cpp | 1 + gcore/gdalalgorithm.h | 16 +++++++++++++++- ogr/ogrsf_frmts/ngw/gdalngwdataset.cpp | 6 +++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/autotest/cpp/testfloat16.cpp b/autotest/cpp/testfloat16.cpp index 7d141a32c1b4..dadabee88b07 100644 --- a/autotest/cpp/testfloat16.cpp +++ b/autotest/cpp/testfloat16.cpp @@ -144,6 +144,7 @@ TEST(TestFloat16, math) if (x >= 0) { using std::sqrt; + // coverity[negative_returns] EXPECT_NEAR(sqrt(GFloat16(x)), sqrt(x), fabs(sqrt(x) / 1024)); } } diff --git a/gcore/gdalalgorithm.h b/gcore/gdalalgorithm.h index 9a0788c9822d..3e00fbb8adf8 100644 --- a/gcore/gdalalgorithm.h +++ b/gcore/gdalalgorithm.h @@ -1058,7 +1058,21 @@ class CPL_DLL GDALAlgorithmArg /* non-final */ !std::is_same_v>) { if (decl.HasDefaultValue()) - *std::get(m_value) = decl.GetDefault(); + { + try + { + *std::get(m_value) = decl.GetDefault(); + } + catch (const std::bad_variant_access &e) + { + // I don't think that can happen, but Coverity Scan thinks + // so + CPLError(CE_Failure, CPLE_AppDefined, + "*std::get(m_value) = decl.GetDefault() " + "failed: %s", + e.what()); + } + } } } diff --git a/ogr/ogrsf_frmts/ngw/gdalngwdataset.cpp b/ogr/ogrsf_frmts/ngw/gdalngwdataset.cpp index e272b9f41a1a..b94010fa511c 100644 --- a/ogr/ogrsf_frmts/ngw/gdalngwdataset.cpp +++ b/ogr/ogrsf_frmts/ngw/gdalngwdataset.cpp @@ -1738,7 +1738,7 @@ bool OGRNGWDataset::AddFieldDomain(std::unique_ptr &&domain, } auto osPalyload = CreateNGWLookupTableJson( - dynamic_cast(domain.get()), + static_cast(domain.get()), static_cast(std::stol(osResourceId))); std::string osResourceIdInt = @@ -1801,7 +1801,7 @@ bool OGRNGWDataset::UpdateFieldDomain(std::unique_ptr &&domain, } auto osPayload = CreateNGWLookupTableJson( - dynamic_cast(domain.get()), + static_cast(domain.get()), static_cast(std::stol(osResourceId))); if (!NGWAPI::UpdateResource(osUrl, osResourceId, osPayload, GetHeaders())) @@ -1859,4 +1859,4 @@ GIntBig OGRNGWDataset::GetDomainIdByName(const std::string &osDomainName) const } } return 0L; -} \ No newline at end of file +}