diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2022-11-04 17:51:23 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2022-11-09 04:05:50 -0700 |
commit | 8a3a87d13c39d4540801d9b6833af07db8dc8051 (patch) | |
tree | a2fef4b001a8ddd98470c398cc4b89a20dce0f20 /src/corelib/kernel/qvariant.cpp | |
parent | a3b4fffc04680d263f9245ddcc8a0f1d2e294f03 (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.cpp | 6 |
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); } |