Control: tags -1 patch
A simple fix, once it's seen. As a bonus, fix the invalid altitude detection.
>From f83eb0b27b0e9458a371b725a8e360ef4230cc8a Mon Sep 17 00:00:00 2001 From: Teemu Ikonen <tpiko...@mailbox.org> Date: Thu, 14 Oct 2021 21:22:23 +0300 Subject: [PATCH 1/2] Fix assignment vs. comparison precedence error in geoclue2 plugin Replace constructs of type if(const auto foo = location.foo() > bar) // foo is boolean with const auto foo = location.foo(); if(foo > bar) // foo equals location.foo() --- .../geoclue2/qgeopositioninfosource_geoclue2.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp b/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp index 10484e3..d92230d 100644 --- a/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp +++ b/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp @@ -410,7 +410,9 @@ void QGeoPositionInfoSourceGeoclue2::handleNewLocation(const QDBusObjectPath &ol } else { QGeoCoordinate coordinate(location.latitude(), location.longitude()); - if (const auto altitude = location.altitude() > std::numeric_limits<double>::min()) + + const auto altitude = location.altitude(); + if (altitude > std::numeric_limits<double>::min()) coordinate.setAltitude(altitude); const Timestamp ts = location.timestamp(); @@ -426,11 +428,14 @@ void QGeoPositionInfoSourceGeoclue2::handleNewLocation(const QDBusObjectPath &ol const auto accuracy = location.accuracy(); // We assume that an accuracy as 0.0 means that it comes from a sattelite. m_lastPositionFromSatellite = qFuzzyCompare(accuracy, 0.0); - m_lastPosition.setAttribute(QGeoPositionInfo::HorizontalAccuracy, accuracy); - if (const auto speed = location.speed() >= 0.0) + + const auto speed = location.speed(); + if (speed >= 0.0) m_lastPosition.setAttribute(QGeoPositionInfo::GroundSpeed, speed); - if (const auto heading = location.heading() >= 0.0) + + const auto heading = location.heading(); + if (heading >= 0.0) m_lastPosition.setAttribute(QGeoPositionInfo::Direction, heading); emit positionUpdated(m_lastPosition); -- 2.30.2
>From 3d5e2c302be87ba84681c45cd206b050ea71761f Mon Sep 17 00:00:00 2001 From: Teemu Ikonen <tpiko...@mailbox.org> Date: Thu, 14 Oct 2021 21:56:29 +0300 Subject: [PATCH 2/2] Fix detection of invalid altitude values in geoclue2 plugin Replace std::numeric_limits<double>::min() with ::lowest(). --- .../position/geoclue2/qgeopositioninfosource_geoclue2.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp b/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp index d92230d..e3be986 100644 --- a/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp +++ b/src/plugins/position/geoclue2/qgeopositioninfosource_geoclue2.cpp @@ -412,7 +412,7 @@ void QGeoPositionInfoSourceGeoclue2::handleNewLocation(const QDBusObjectPath &ol location.longitude()); const auto altitude = location.altitude(); - if (altitude > std::numeric_limits<double>::min()) + if (altitude > std::numeric_limits<double>::lowest()) coordinate.setAltitude(altitude); const Timestamp ts = location.timestamp(); -- 2.30.2