diff --git a/src/corelib/serialization/qtextstream.cpp b/src/corelib/serialization/qtextstream.cpp index 501ee3a5efa..965ad285f1a 100644 --- a/src/corelib/serialization/qtextstream.cpp +++ b/src/corelib/serialization/qtextstream.cpp @@ -2296,7 +2296,7 @@ QTextStream &QTextStream::operator<<(signed short i) { Q_D(QTextStream); CHECK_VALID_STREAM(*this); - d->putNumber((qulonglong)qAbs(qlonglong(i)), i < 0); + d->putNumber(QtPrivate::qUnsignedAbs(i), i < 0); return *this; } @@ -2322,7 +2322,7 @@ QTextStream &QTextStream::operator<<(signed int i) { Q_D(QTextStream); CHECK_VALID_STREAM(*this); - d->putNumber((qulonglong)qAbs(qlonglong(i)), i < 0); + d->putNumber(QtPrivate::qUnsignedAbs(i), i < 0); return *this; } @@ -2348,7 +2348,7 @@ QTextStream &QTextStream::operator<<(signed long i) { Q_D(QTextStream); CHECK_VALID_STREAM(*this); - d->putNumber((qulonglong)qAbs(qlonglong(i)), i < 0); + d->putNumber(QtPrivate::qUnsignedAbs(i), i < 0); return *this; } @@ -2374,7 +2374,7 @@ QTextStream &QTextStream::operator<<(qlonglong i) { Q_D(QTextStream); CHECK_VALID_STREAM(*this); - d->putNumber((qulonglong)qAbs(i), i < 0); + d->putNumber(QtPrivate::qUnsignedAbs(i), i < 0); return *this; } diff --git a/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp b/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp index cd0e30f9536..cfe99686e92 100644 --- a/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp +++ b/tests/auto/corelib/serialization/qtextstream/tst_qtextstream.cpp @@ -2304,6 +2304,7 @@ void tst_QTextStream::signedShort_write_operator_ToDevice_data() QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("-1") << QByteArray("-1"); QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("0") << QByteArray("0"); QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("1") << QByteArray("1"); + QTest::newRow("-32768") << quint64(-32768) << QByteArray("-32768") << QByteArray("-32,768"); } IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(signedShort, signed short) ; @@ -2350,6 +2351,7 @@ void tst_QTextStream::signedInt_write_operator_ToDevice_data() QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("-1") << QByteArray("-1"); QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("0") << QByteArray("0"); QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("1") << QByteArray("1"); + QTest::newRow("-2147483648") << quint64(-2147483648) << QByteArray("-2147483648") << QByteArray("-2,147,483,648"); } IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(signedInt, signed int) ; @@ -2406,6 +2408,7 @@ void tst_QTextStream::qlonglong_write_operator_ToDevice_data() QTest::newRow("9223372036854775808") << Q_UINT64_C(9223372036854775808) << QByteArray("-9223372036854775808") << QByteArray("-9,223,372,036,854,775,808"); QTest::newRow("9223372036854775809") << Q_UINT64_C(9223372036854775809) << QByteArray("-9223372036854775807") << QByteArray("-9,223,372,036,854,775,807"); QTest::newRow("18446744073709551615") << Q_UINT64_C(18446744073709551615) << QByteArray("-1") << QByteArray("-1"); + QTest::newRow("-9223372036854775808") << quint64(Q_INT64_C(-9223372036854775807) - 1) << QByteArray("-9223372036854775808") << QByteArray("-9,223,372,036,854,775,808"); } IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(qlonglong, qlonglong) ;