From 038c1c5978c30675c5f953035a193bc76ca6ca21 Mon Sep 17 00:00:00 2001 From: Marc Mutz Date: Wed, 3 May 2023 15:10:05 +0200 Subject: [PATCH] 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 Reviewed-by: Thiago Macieira Reviewed-by: Ahmad Samir --- src/corelib/text/qbytearray.cpp | 4 +++- src/corelib/text/qstring.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/corelib/text/qbytearray.cpp b/src/corelib/text/qbytearray.cpp index 1b21c98a2f..22ea718896 100644 --- a/src/corelib/text/qbytearray.cpp +++ b/src/corelib/text/qbytearray.cpp @@ -3222,8 +3222,10 @@ QDataStream &operator>>(QDataStream &in, QByteArray &ba) ba.clear(); quint32 len; in >> len; - if (len == 0xffffffff) + if (len == 0xffffffff) { // null byte-array + ba = QByteArray(); return in; + } const quint32 Step = 1024 * 1024; quint32 allocated = 0; diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp index b88511087a..87f0cc2c48 100644 --- a/src/corelib/text/qstring.cpp +++ b/src/corelib/text/qstring.cpp @@ -9245,7 +9245,7 @@ QDataStream &operator>>(QDataStream &in, QString &str) quint32 bytes = 0; in >> bytes; // read size of string if (bytes == 0xffffffff) { // null string - str.clear(); + str = QString(); } else if (bytes > 0) { // not empty if (bytes & 0x1) { str.clear();