diff --git a/src/corelib/compat/removed_api.cpp b/src/corelib/compat/removed_api.cpp index abfb11c8724..16c44f09a3c 100644 --- a/src/corelib/compat/removed_api.cpp +++ b/src/corelib/compat/removed_api.cpp @@ -708,9 +708,9 @@ bool QDateTime::precedes(const QDateTime &other) const QDataStream &QDataStream::readBytes(char *&s, uint &l) { - qsizetype length = 0; + qint64 length = 0; (void)readBytes(s, length); - if (length != qsizetype(uint(length))) { + if (length != qint64(uint(length))) { setStatus(ReadCorruptData); // Cannot store length in l delete[] s; l = 0; @@ -722,12 +722,7 @@ QDataStream &QDataStream::readBytes(char *&s, uint &l) QDataStream &QDataStream::writeBytes(const char *s, uint len) { - qsizetype length = qsizetype(len); - if (length < 0) { - setStatus(WriteFailed); - return *this; - } - return writeBytes(s, length); + return writeBytes(s, qint64(len)); } int QDataStream::skipRawData(int len) @@ -735,25 +730,21 @@ int QDataStream::skipRawData(int len) return int(skipRawData(qint64(len))); } -#if QT_POINTER_SIZE != 4 - int QDataStream::readBlock(char *data, int len) { - return int(readBlock(data, qsizetype(len))); + return int(readBlock(data, qint64(len))); } int QDataStream::readRawData(char *s, int len) { - return int(readRawData(s, qsizetype(len))); + return int(readRawData(s, qint64(len))); } int QDataStream::writeRawData(const char *s, int len) { - return writeRawData(s, qsizetype(len)); + return writeRawData(s, qint64(len)); } -#endif // QT_POINTER_SIZE != 4 - #if defined(Q_OS_ANDROID) #include "qjniobject.h" diff --git a/src/corelib/serialization/qdatastream.cpp b/src/corelib/serialization/qdatastream.cpp index 008edc088a0..d67908bb2cd 100644 --- a/src/corelib/serialization/qdatastream.cpp +++ b/src/corelib/serialization/qdatastream.cpp @@ -757,13 +757,13 @@ bool QDataStream::isDeviceTransactionStarted() const \internal */ -qsizetype QDataStream::readBlock(char *data, qsizetype len) +qint64 QDataStream::readBlock(char *data, qint64 len) { // Disable reads on failure in transacted stream if (q_status != Ok && dev->isTransactionStarted()) return -1; - const qsizetype readResult = dev->read(data, len); + const qint64 readResult = dev->read(data, len); if (readResult != len) setStatus(ReadPastEnd); return readResult; @@ -1002,7 +1002,7 @@ QDataStream &QDataStream::operator>>(double &f) QDataStream &QDataStream::operator>>(char *&s) { - qsizetype len = 0; + qint64 len = 0; return readBytes(s, len); } @@ -1057,7 +1057,7 @@ QDataStream &QDataStream::operator>>(char32_t &c) \sa readRawData(), writeBytes() */ -QDataStream &QDataStream::readBytes(char *&s, qsizetype &l) +QDataStream &QDataStream::readBytes(char *&s, qint64 &l) { s = nullptr; l = 0; @@ -1069,7 +1069,7 @@ QDataStream &QDataStream::readBytes(char *&s, qsizetype &l) qsizetype len = qsizetype(length); if (length != len || length < 0) { - setStatus(SizeLimitExceeded); // Cannot store len in l + setStatus(SizeLimitExceeded); // Cannot store len return *this; } @@ -1108,7 +1108,7 @@ QDataStream &QDataStream::readBytes(char *&s, qsizetype &l) \sa readBytes(), QIODevice::read(), writeRawData() */ -qsizetype QDataStream::readRawData(char *s, qsizetype len) +qint64 QDataStream::readRawData(char *s, qint64 len) { CHECK_STREAM_PRECOND(-1) return readBlock(s, len); @@ -1389,7 +1389,7 @@ QDataStream &QDataStream::operator<<(char32_t c) \sa writeRawData(), readBytes() */ -QDataStream &QDataStream::writeBytes(const char *s, qsizetype len) +QDataStream &QDataStream::writeBytes(const char *s, qint64 len) { if (len < 0) { q_status = WriteFailed; @@ -1410,10 +1410,10 @@ QDataStream &QDataStream::writeBytes(const char *s, qsizetype len) \sa writeBytes(), QIODevice::write(), readRawData() */ -qsizetype QDataStream::writeRawData(const char *s, qsizetype len) +qint64 QDataStream::writeRawData(const char *s, qint64 len) { CHECK_STREAM_WRITE_PRECOND(-1) - qsizetype ret = dev->write(s, len); + qint64 ret = dev->write(s, len); if (ret != len) q_status = WriteFailed; return ret; diff --git a/src/corelib/serialization/qdatastream.h b/src/corelib/serialization/qdatastream.h index 6c67753ecda..80f4b234539 100644 --- a/src/corelib/serialization/qdatastream.h +++ b/src/corelib/serialization/qdatastream.h @@ -180,15 +180,13 @@ public: QDataStream &readBytes(char *&, uint &len); QDataStream &writeBytes(const char *, uint len); int skipRawData(int len); -#endif -#if QT_CORE_REMOVED_SINCE(6, 7) && QT_POINTER_SIZE != 4 int readRawData(char *, int len); int writeRawData(const char *, int len); #endif - QDataStream &readBytes(char *&, qsizetype &len); - qsizetype readRawData(char *, qsizetype len); - QDataStream &writeBytes(const char *, qsizetype len); - qsizetype writeRawData(const char *, qsizetype len); + QDataStream &readBytes(char *&, qint64 &len); + qint64 readRawData(char *, qint64 len); + QDataStream &writeBytes(const char *, qint64 len); + qint64 writeRawData(const char *, qint64 len); qint64 skipRawData(qint64 len); void startTransaction(); @@ -208,10 +206,10 @@ private: ByteOrder byteorder; int ver; Status q_status; -#if QT_CORE_REMOVED_SINCE(6, 7) && QT_POINTER_SIZE != 4 +#if QT_CORE_REMOVED_SINCE(6, 7) int readBlock(char *data, int len); #endif - qsizetype readBlock(char *data, qsizetype len); + qint64 readBlock(char *data, qint64 len); static inline qint64 readQSizeType(QDataStream &s); static inline void writeQSizeType(QDataStream &s, qint64 value); enum class QDataStreamSizes : quint32 { NullCode = 0xffffffffu, ExtendedSize = 0xfffffffeu }; diff --git a/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp b/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp index c6d9d5d4abd..09f2bbc860f 100644 --- a/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp +++ b/tests/auto/corelib/serialization/qdatastream/tst_qdatastream.cpp @@ -2818,10 +2818,10 @@ void tst_QDataStream::status_charptr_QByteArray() { QDataStream stream(&data, QIODevice::ReadOnly); char *buf; - qsizetype len; + qint64 len; stream.readBytes(buf, len); - QCOMPARE(len, expectedString.size()); + QCOMPARE(len, qint64(expectedString.size())); QCOMPARE(QByteArray(buf, len), expectedString); QCOMPARE(int(stream.status()), expectedStatus); delete [] buf;