ByteVector &ByteVector::append(const ByteVector &v)
{
- if(v.d->length != 0) {
- detach();
- unsigned int originalSize = size();
- resize(originalSize + v.size());
- ::memcpy(data() + originalSize, v.data(), v.size());
- }
+ if(v.isEmpty())
+ return *this;
+
+ detach();
+
+ const unsigned int originalSize = size();
+ const unsigned int appendSize = v.size();
+
+ resize(originalSize + v.size());
+ ::memcpy(data() + originalSize, v.data(), appendSize);
return *this;
}
CPPUNIT_TEST(testReplace);
CPPUNIT_TEST(testIterator);
CPPUNIT_TEST(testResize);
- CPPUNIT_TEST(testAppend);
+ CPPUNIT_TEST(testAppend1);
+ CPPUNIT_TEST(testAppend2);
CPPUNIT_TEST(testBase64);
CPPUNIT_TEST_SUITE_END();
CPPUNIT_ASSERT_EQUAL(-1, c.find('C'));
}
- void testAppend()
+ void testAppend1()
{
ByteVector v1("foo");
v1.append("bar");
CPPUNIT_ASSERT_EQUAL(ByteVector("taglib"), v8);
}
+ void testAppend2()
+ {
+ ByteVector a("1234");
+ a.append(a);
+ CPPUNIT_ASSERT_EQUAL(ByteVector("12341234"), a);
+ }
+
void testBase64()
{
ByteVector sempty;