From 8a3a87d13c39d4540801d9b6833af07db8dc8051 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 4 Nov 2022 17:51:23 -0700 Subject: QVariant: move the NaN comparison into the spaceShip function Note: NaN = not Not A Naan Change-Id: I3d74c753055744deb8acfffd17248a02f7968121 Reviewed-by: Fabian Kosmale --- src/corelib/kernel/qvariant.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/corelib/kernel/qvariant.cpp') 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 static QPartialOrdering spaceShip(Numeric lhs, Numer { if (lhs == rhs) return QPartialOrdering::Equivalent; + if constexpr (std::numeric_limits::has_quiet_NaN) { + if (std::isnan(lhs) || std::isnan(rhs)) + return QPartialOrdering::Unordered; + } bool smaller; if constexpr (std::is_same_v) @@ -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(*r1, *r2); } -- cgit v1.2.3