QByteArray::assign: Don't crash when passed an empty range

Pick-to: 6.7
Change-Id: I712725a1bc8c6efb97969676673ac7ca01ef3ee2
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
(cherry picked from commit c0afb1ae836b779fbf0b0b60b7c55517e2e2f00f)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Albert Astals Cid 2024-06-24 12:11:16 +02:00 committed by Qt Cherry-pick Bot
parent ce99ae49b9
commit 6abe7d05a1
2 changed files with 11 additions and 1 deletions

View File

@ -308,7 +308,8 @@ public:
QByteArray &assign(InputIterator first, InputIterator last)
{
d.assign(first, last);
d.data()[d.size] = '\0';
if (d.data())
d.data()[d.size] = '\0';
return *this;
}

View File

@ -1017,6 +1017,11 @@ void tst_QByteArray::assign()
QByteArrayView test;
QList<char> l = {'\0', 'T', 'E', 'S', 'T'};
ba.assign(l.begin(), l.begin());
QVERIFY(ba.isEmpty());
QCOMPARE(*ba.constData(), '\0');
ba.assign(l.begin(), l.end());
test = "\0TEST"_ba;
QCOMPARE(ba, test);
@ -1033,6 +1038,10 @@ void tst_QByteArray::assign()
test = "T\0ST"_ba;
QCOMPARE(ba, test);
QCOMPARE(ba.size(), test.size());
ba.assign(l.begin(), l.begin());
QVERIFY(ba.isEmpty());
QCOMPARE(*ba.constData(), '\0');
}
// Test chaining
{