diff --git a/src/corelib/serialization/qdatastream.cpp b/src/corelib/serialization/qdatastream.cpp index f1572b46c7..57713d3645 100644 --- a/src/corelib/serialization/qdatastream.cpp +++ b/src/corelib/serialization/qdatastream.cpp @@ -476,11 +476,14 @@ void QDataStream::setStatus(Status status) void QDataStream::setByteOrder(ByteOrder bo) { +#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED) + // accessed by inline byteOrder() prior to Qt 6.8 byteorder = bo; +#endif if (QSysInfo::ByteOrder == QSysInfo::BigEndian) - noswap = (byteorder == BigEndian); + noswap = (bo == BigEndian); else - noswap = (byteorder == LittleEndian); + noswap = (bo == LittleEndian); } diff --git a/src/corelib/serialization/qdatastream.h b/src/corelib/serialization/qdatastream.h index e7ef94a8a7..36d8a618ff 100644 --- a/src/corelib/serialization/qdatastream.h +++ b/src/corelib/serialization/qdatastream.h @@ -221,7 +221,9 @@ private: bool noswap = QSysInfo::ByteOrder == QSysInfo::BigEndian; quint8 fpPrecision = QDataStream::DoublePrecision; quint8 q_status = Ok; +#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED) ByteOrder byteorder = BigEndian; +#endif int ver = Qt_DefaultCompiledVersion; quint16 transactionDepth = 0; @@ -438,7 +440,11 @@ QDataStream::FloatingPointPrecision QDataStream::floatingPointPrecision() const #endif // INLINE_SINCE 6.8 inline QDataStream::ByteOrder QDataStream::byteOrder() const -{ return byteorder; } +{ + if constexpr (QSysInfo::ByteOrder == QSysInfo::BigEndian) + return noswap ? BigEndian : LittleEndian; + return noswap ? LittleEndian : BigEndian; +} inline int QDataStream::version() const { return ver; }