diff --git a/src/corelib/serialization/qdatastream.cpp b/src/corelib/serialization/qdatastream.cpp index 5be4e734c67..f1f45895aa9 100644 --- a/src/corelib/serialization/qdatastream.cpp +++ b/src/corelib/serialization/qdatastream.cpp @@ -258,7 +258,7 @@ constexpr quint32 QDataStream::ExtendedSize; return retVal; #define CHECK_STREAM_TRANSACTION_PRECOND(retVal) \ - if (!d || d->transactionDepth == 0) { \ + if (transactionDepth == 0) { \ qWarning("QDataStream: No transaction in progress"); \ return retVal; \ } @@ -623,10 +623,7 @@ void QDataStream::startTransaction() { CHECK_STREAM_PRECOND(Q_VOID) - if (!d) - d.reset(new QDataStreamPrivate()); - - if (++d->transactionDepth == 1) { + if (++transactionDepth == 1) { dev->startTransaction(); resetStatus(); } @@ -655,7 +652,7 @@ void QDataStream::startTransaction() bool QDataStream::commitTransaction() { CHECK_STREAM_TRANSACTION_PRECOND(false) - if (--d->transactionDepth == 0) { + if (--transactionDepth == 0) { CHECK_STREAM_PRECOND(false) if (q_status == ReadPastEnd) { @@ -695,7 +692,7 @@ void QDataStream::rollbackTransaction() setStatus(ReadPastEnd); CHECK_STREAM_TRANSACTION_PRECOND(Q_VOID) - if (--d->transactionDepth != 0) + if (--transactionDepth != 0) return; CHECK_STREAM_PRECOND(Q_VOID) @@ -731,7 +728,7 @@ void QDataStream::abortTransaction() q_status = ReadCorruptData; CHECK_STREAM_TRANSACTION_PRECOND(Q_VOID) - if (--d->transactionDepth != 0) + if (--transactionDepth != 0) return; CHECK_STREAM_PRECOND(Q_VOID) diff --git a/src/corelib/serialization/qdatastream.h b/src/corelib/serialization/qdatastream.h index b4be27f4742..27694aacc38 100644 --- a/src/corelib/serialization/qdatastream.h +++ b/src/corelib/serialization/qdatastream.h @@ -220,9 +220,11 @@ private: bool owndev; bool noswap; quint8 fpPrecision = QDataStream::DoublePrecision; + quint8 q_status; ByteOrder byteorder; int ver; - Status q_status; + quint16 transactionDepth = 0; + #if QT_CORE_REMOVED_SINCE(6, 7) int readBlock(char *data, int len); #endif @@ -426,7 +428,7 @@ inline QIODevice *QDataStream::device() const #if QT_CORE_INLINE_IMPL_SINCE(6, 8) QDataStream::Status QDataStream::status() const { - return q_status; + return Status(q_status); } QDataStream::FloatingPointPrecision QDataStream::floatingPointPrecision() const diff --git a/src/corelib/serialization/qdatastream_p.h b/src/corelib/serialization/qdatastream_p.h index 4600fa64d02..c4fe7c784cf 100644 --- a/src/corelib/serialization/qdatastream_p.h +++ b/src/corelib/serialization/qdatastream_p.h @@ -24,7 +24,6 @@ QT_BEGIN_NAMESPACE class QDataStreamPrivate { public: - int transactionDepth = 0; }; #endif