QString/QByteArray::op>>: don't assume clear() makes the container isNull()

This is something we may want to change at some point, so be explicit
and assign a null container instead of relying on clear().

Add a comment that was present in the QString, but missing in the
QByteArray implementation.

Pick-to: 6.5
Task-number: QTBUG-31283
Task-number: QTBUG-60745
Change-Id: I10d82b8a0c67fff314af526c7b7e0f247c3405fd
Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Reviewed-by: Ahmad Samir <a.samirh78@gmail.com>
This commit is contained in:
Marc Mutz 2023-05-03 15:10:05 +02:00
parent 151287fb51
commit 038c1c5978
2 changed files with 4 additions and 2 deletions

View File

@ -3222,8 +3222,10 @@ QDataStream &operator>>(QDataStream &in, QByteArray &ba)
ba.clear(); ba.clear();
quint32 len; quint32 len;
in >> len; in >> len;
if (len == 0xffffffff) if (len == 0xffffffff) { // null byte-array
ba = QByteArray();
return in; return in;
}
const quint32 Step = 1024 * 1024; const quint32 Step = 1024 * 1024;
quint32 allocated = 0; quint32 allocated = 0;

View File

@ -9245,7 +9245,7 @@ QDataStream &operator>>(QDataStream &in, QString &str)
quint32 bytes = 0; quint32 bytes = 0;
in >> bytes; // read size of string in >> bytes; // read size of string
if (bytes == 0xffffffff) { // null string if (bytes == 0xffffffff) { // null string
str.clear(); str = QString();
} else if (bytes > 0) { // not empty } else if (bytes > 0) { // not empty
if (bytes & 0x1) { if (bytes & 0x1) {
str.clear(); str.clear();