QByteArray: change append(QByteArray) to match QStringBuilder behavior
I.e. concatenating a null byte array and an empty-but-not-null byte array should result in an empty-but-not-null byte array. This matches the behavior of QString::append(QString) too. Fixes: QTBUG-114238 Pick-to: 6.6 Change-Id: Id36d10ee09c08041b7dabda102df48ca6d413d8b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>bb10
parent
d1da83002d
commit
8ed2bc9194
|
|
@ -2044,9 +2044,14 @@ QByteArray &QByteArray::prepend(const QByteArray &ba)
|
|||
|
||||
QByteArray &QByteArray::append(const QByteArray &ba)
|
||||
{
|
||||
if (size() == 0 && ba.size() > d->freeSpaceAtEnd() && ba.d.isMutable())
|
||||
return (*this = ba);
|
||||
return append(QByteArrayView(ba));
|
||||
if (!ba.isNull()) {
|
||||
if (isNull()) {
|
||||
operator=(ba);
|
||||
} else if (ba.size()) {
|
||||
append(QByteArrayView(ba));
|
||||
}
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
|
||||
/*!
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ private slots:
|
|||
void append();
|
||||
void appendExtended_data();
|
||||
void appendExtended();
|
||||
void appendEmptyNull();
|
||||
void assign();
|
||||
void assignShared();
|
||||
void assignUsesPrependBuffer();
|
||||
|
|
@ -937,6 +938,23 @@ void tst_QByteArray::appendExtended()
|
|||
QCOMPARE(array.size(), 11);
|
||||
}
|
||||
|
||||
void tst_QByteArray::appendEmptyNull()
|
||||
{
|
||||
QByteArray a;
|
||||
QVERIFY(a.isEmpty());
|
||||
QVERIFY(a.isNull());
|
||||
|
||||
QByteArray b("");
|
||||
QVERIFY(b.isEmpty());
|
||||
QVERIFY(!b.isNull());
|
||||
|
||||
// Concatenating a null and an empty-but-not-null byte arrays results in
|
||||
// an empty but not null byte array
|
||||
QByteArray r = a + b;
|
||||
QVERIFY(r.isEmpty());
|
||||
QVERIFY(!r.isNull());
|
||||
}
|
||||
|
||||
void tst_QByteArray::assign()
|
||||
{
|
||||
// QByteArray &assign(QByteArrayView)
|
||||
|
|
|
|||
Loading…
Reference in New Issue