summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qvariant.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2022-11-04 17:51:23 -0700
committerThiago Macieira <thiago.macieira@intel.com>2022-11-09 04:05:50 -0700
commit8a3a87d13c39d4540801d9b6833af07db8dc8051 (patch)
treea2fef4b001a8ddd98470c398cc4b89a20dce0f20 /src/corelib/kernel/qvariant.cpp
parenta3b4fffc04680d263f9245ddcc8a0f1d2e294f03 (diff)
QVariant: move the NaN comparison into the spaceShip function
Note: NaN = not Not A Naan Change-Id: I3d74c753055744deb8acfffd17248a02f7968121 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/corelib/kernel/qvariant.cpp')
-rw-r--r--src/corelib/kernel/qvariant.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index 12c2bef709..a7d95174f4 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -2230,6 +2230,10 @@ template <typename Numeric> static QPartialOrdering spaceShip(Numeric lhs, Numer
{
if (lhs == rhs)
return QPartialOrdering::Equivalent;
+ if constexpr (std::numeric_limits<Numeric>::has_quiet_NaN) {
+ if (std::isnan(lhs) || std::isnan(rhs))
+ return QPartialOrdering::Unordered;
+ }
bool smaller;
if constexpr (std::is_same_v<Numeric, QObject *>)
@@ -2270,8 +2274,6 @@ static QPartialOrdering numericCompare(const QVariant::Private *d1, const QVaria
if (*r1 == *r2)
return QPartialOrdering::Equivalent;
- if (std::isnan(*r1) || std::isnan(*r2))
- return QPartialOrdering::Unordered;
return spaceShip<qreal>(*r1, *r2);
}