Details
-
Bug
-
Resolution: Unresolved
-
P4: Low
-
None
-
5.5.1, 5.12.1
-
None
Description
QVariants comparison (Operator ">") is wrong when containing a "nan"-double value:
How to reproduce:
#include <math.h> #include <QVariant> #include <QDebug> int main() { double a = std::nan(""); double b = 0; Q_ASSERT(std::isnan(a)); // native comparison qDebug() << "==" << (a==b); // false qDebug() << "<" << (a<b); // false qDebug() << ">" << (a>b); // false // QVariant comparison qDebug() << "==" << (QVariant(a) == QVariant(b)); // false -> ok qDebug() << "<" << (QVariant(a) < QVariant(b)); // false -> ok qDebug() << ">" << (QVariant(a) > QVariant(b)); // true -> NOT ok // Validate expectations Q_ASSERT((a==b) == (QVariant(a) == QVariant(b))); // ok Q_ASSERT((a< b) == (QVariant(a) < QVariant(b))); // ok Q_ASSERT((a> b) == (QVariant(a) > QVariant(b))); // NOT ok return 0; }