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.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>
(cherry picked from commit 741617aea0e4c631b2fd4b822f0948ec067f1cdc)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Marc Mutz 2024-01-27 10:32:20 +01:00 committed by Qt Cherry-pick Bot
parent 277aa8e61b
commit 5e3723e7ff

View File

@ -894,19 +894,15 @@ QBitArray operator^(const QBitArray &a1, const QBitArray &a2)
QDataStream &operator<<(QDataStream &out, const QBitArray &ba) QDataStream &operator<<(QDataStream &out, const QBitArray &ba)
{ {
const qsizetype len = ba.size();
if (out.version() < QDataStream::Qt_6_0) { if (out.version() < QDataStream::Qt_6_0) {
quint32 len = ba.size(); out << quint32(len);
out << len;
if (len > 0)
out.writeRawData(ba.d.constData() + 1, ba.d.size() - 1);
return out;
} else { } else {
quint64 len = ba.size(); out << quint64(len);
out << len;
if (len > 0)
out.writeRawData(ba.d.constData() + 1, ba.d.size() - 1);
return out;
} }
if (len > 0)
out.writeRawData(ba.d.data() + 1, ba.d.size() - 1);
return out;
} }
/*! /*!