Fix Clang 10 warning about LLONG_MAX being inexact in double

validator.cpp:707:19: error: implicit conversion from 'long long' to 'double' changes value from
 9223372036854775807 to 9223372036854775808 [-Werror,- Wimplicit-int-float-conversion]

Task-number: QTBUG-83666
Pick-To: 5.15
Change-Id: I99ab0f318b1c43b89888fffd160b4a95a258423b
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Samuel Gaist <samuel.gaist@idiap.ch>
This commit is contained in:
Thiago Macieira 2020-05-02 11:48:20 -07:00
parent 64349c3fd5
commit ff6d2cb0d5

View File

@ -693,8 +693,9 @@ QValidator::State QDoubleValidatorPrivate::validateWithLocale(QString &input, QL
if (notation == QDoubleValidator::StandardNotation) { if (notation == QDoubleValidator::StandardNotation) {
double max = qMax(qAbs(q->b), qAbs(q->t)); double max = qMax(qAbs(q->b), qAbs(q->t));
if (max < double(LLONG_MAX)) { qlonglong v;
qlonglong n = pow10(numDigits(qlonglong(max))); if (convertDoubleTo(max, &v)) {
qlonglong n = pow10(numDigits(v));
// In order to get the highest possible number in the intermediate // In order to get the highest possible number in the intermediate
// range we need to get 10 to the power of the number of digits // range we need to get 10 to the power of the number of digits
// after the decimal's and subtract that from the top number. // after the decimal's and subtract that from the top number.