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:
parent
ce99ae49b9
commit
6abe7d05a1
@ -308,7 +308,8 @@ public:
|
|||||||
QByteArray &assign(InputIterator first, InputIterator last)
|
QByteArray &assign(InputIterator first, InputIterator last)
|
||||||
{
|
{
|
||||||
d.assign(first, last);
|
d.assign(first, last);
|
||||||
d.data()[d.size] = '\0';
|
if (d.data())
|
||||||
|
d.data()[d.size] = '\0';
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1017,6 +1017,11 @@ void tst_QByteArray::assign()
|
|||||||
QByteArrayView test;
|
QByteArrayView test;
|
||||||
|
|
||||||
QList<char> l = {'\0', 'T', 'E', 'S', 'T'};
|
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());
|
ba.assign(l.begin(), l.end());
|
||||||
test = "\0TEST"_ba;
|
test = "\0TEST"_ba;
|
||||||
QCOMPARE(ba, test);
|
QCOMPARE(ba, test);
|
||||||
@ -1033,6 +1038,10 @@ void tst_QByteArray::assign()
|
|||||||
test = "T\0ST"_ba;
|
test = "T\0ST"_ba;
|
||||||
QCOMPARE(ba, test);
|
QCOMPARE(ba, test);
|
||||||
QCOMPARE(ba.size(), test.size());
|
QCOMPARE(ba.size(), test.size());
|
||||||
|
|
||||||
|
ba.assign(l.begin(), l.begin());
|
||||||
|
QVERIFY(ba.isEmpty());
|
||||||
|
QCOMPARE(*ba.constData(), '\0');
|
||||||
}
|
}
|
||||||
// Test chaining
|
// Test chaining
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user