diff options
author | Marc Mutz <marc.mutz@qt.io> | 2024-01-27 10:32:20 +0100 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2024-02-01 19:41:25 +0100 |
commit | 741617aea0e4c631b2fd4b822f0948ec067f1cdc (patch) | |
tree | c4137c9cec770299cb66bb64575362d9e3841baa /src/corelib/tools/qbitarray.cpp | |
parent | 4aa2e594ff055e46c56734a2c0838c214c6bce88 (diff) |
QBitArray: DRY operator<<(QDataStream&)
Drag the common parts out of the if-else. This also means that
qsizetype size() is no longer truncated in the assignment to quint32
len, but that doesn't fix the problem that we create invalid Qt 5
streams when the QBitArray has more than INT_MAX bits in it. That is
for a follow-up patch (which is why the {} stay for now).
As a drive-by, replace verbose constData() with data() (the QByteArray
is already const).
Pick-to: 6.7 6.6 6.5 6.2
Change-Id: Iabf816e16f823bb3959469a635a21339242f36fc
Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/corelib/tools/qbitarray.cpp')
-rw-r--r-- | src/corelib/tools/qbitarray.cpp | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/src/corelib/tools/qbitarray.cpp b/src/corelib/tools/qbitarray.cpp index 0ea012a94b..8c750dd01c 100644 --- a/src/corelib/tools/qbitarray.cpp +++ b/src/corelib/tools/qbitarray.cpp @@ -898,19 +898,15 @@ QBitArray operator^(const QBitArray &a1, const QBitArray &a2) QDataStream &operator<<(QDataStream &out, const QBitArray &ba) { + const qsizetype len = ba.size(); if (out.version() < QDataStream::Qt_6_0) { - quint32 len = ba.size(); - out << len; - if (len > 0) - out.writeRawData(ba.d.constData() + 1, ba.d.size() - 1); - return out; + out << quint32(len); } else { - quint64 len = ba.size(); - out << len; - if (len > 0) - out.writeRawData(ba.d.constData() + 1, ba.d.size() - 1); - return out; + out << quint64(len); } + if (len > 0) + out.writeRawData(ba.d.data() + 1, ba.d.size() - 1); + return out; } /*! |