Fix the wrong padding of ByteVector::resize().

The expanded area will be filled with garbage instead of correct padding in some corner cases.
This commit is contained in:
Tsuda Kageyu 2015-05-02 02:34:40 +09:00
parent 62ab41fa07
commit ff8443f33a
2 changed files with 7 additions and 0 deletions

View File

@ -702,6 +702,7 @@ ByteVector &ByteVector::resize(uint size, char padding)
{
if(size != d->length) {
detach();
d->data->data.resize(d->offset + d->length);
d->data->data.resize(d->offset + size, padding);
d->length = size;
}

View File

@ -123,6 +123,12 @@ public:
CPPUNIT_ASSERT(i.containsAt(j, 5, 0));
CPPUNIT_ASSERT(i.containsAt(j, 6, 1));
CPPUNIT_ASSERT(i.containsAt(j, 6, 1, 3));
ByteVector k = ByteVector("0123456789").mid(3, 4);
k.resize(6, 'A');
CPPUNIT_ASSERT_EQUAL(uint(6), k.size());
CPPUNIT_ASSERT_EQUAL('6', k[3]);
CPPUNIT_ASSERT_EQUAL('A', k[4]);
}
void testFind1()