diff --git a/src/gui/util/qvalidator.cpp b/src/gui/util/qvalidator.cpp index 95d8b2a542..6f93738340 100644 --- a/src/gui/util/qvalidator.cpp +++ b/src/gui/util/qvalidator.cpp @@ -683,8 +683,7 @@ QValidator::State QDoubleValidatorPrivate::validateWithLocale(QString &input, QL bool ok = false; double i = locale.toDouble(input, &ok); // returns 0.0 if !ok - if (i == qt_qnan()) - return QValidator::Invalid; + Q_ASSERT(!qIsNaN(i)); // Would be caught by validateChars() if (!ok) return QValidator::Intermediate; diff --git a/tests/auto/gui/util/qdoublevalidator/tst_qdoublevalidator.cpp b/tests/auto/gui/util/qdoublevalidator/tst_qdoublevalidator.cpp index fb8e5f0a3a..d1684e9153 100644 --- a/tests/auto/gui/util/qdoublevalidator/tst_qdoublevalidator.cpp +++ b/tests/auto/gui/util/qdoublevalidator/tst_qdoublevalidator.cpp @@ -216,6 +216,14 @@ void tst_QDoubleValidator::validate_data() QTest::newRow("data_de48") << "de" << 0.0 << 2.0 << 2 << QString("9,9999") << INV << INV; QTest::newRow("data_de49") << "de" << 100.0 << 200.0 << 4 << QString("9999,9999") << ITM << INV; + // using default QDoubleValidator parameters for initialization + QTest::newRow("inf") << "C" << -HUGE_VAL << HUGE_VAL << 1000 << QString("inf") << INV << INV; + QTest::newRow("+inf") << "C" << -HUGE_VAL << HUGE_VAL << 1000 << QString("+inf") << INV << INV; + QTest::newRow("-inf") << "C" << -HUGE_VAL << HUGE_VAL << 1000 << QString("-inf") << INV << INV; + QTest::newRow("nan") << "C" << -HUGE_VAL << HUGE_VAL << 1000 << QString("nan") << INV << INV; + QTest::newRow("+nan") << "C" << -HUGE_VAL << HUGE_VAL << 1000 << QString("+nan") << INV << INV; + QTest::newRow("-nan") << "C" << -HUGE_VAL << HUGE_VAL << 1000 << QString("-nan") << INV << INV; + QString arabicNum; arabicNum += QChar(1633); // "18.4" in arabic arabicNum += QChar(1640);