Make QRingBuffer::append() not leave empty arrays in buffer list
Change-Id: I4c5af33488a70996299289ec2b953b7bf3b2c428 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>bb10
parent
3905c6f00d
commit
edfac1a9ed
|
|
@ -369,9 +369,13 @@ public:
|
|||
|
||||
// append a new buffer to the end
|
||||
inline void append(const QByteArray &qba) {
|
||||
buffers[tailBuffer].resize(tail);
|
||||
buffers << qba;
|
||||
++tailBuffer;
|
||||
if (tail == 0) {
|
||||
buffers.last() = qba;
|
||||
} else {
|
||||
buffers.last().resize(tail);
|
||||
buffers << qba;
|
||||
++tailBuffer;
|
||||
}
|
||||
tail = qba.length();
|
||||
bufferSize += qba.length();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ private slots:
|
|||
void sizeWhenEmpty();
|
||||
void sizeWhenReservedAndChopped();
|
||||
void sizeWhenReserved();
|
||||
void appendAndRead();
|
||||
};
|
||||
|
||||
void tst_QRingBuffer::sizeWhenReserved()
|
||||
|
|
@ -179,6 +180,20 @@ void tst_QRingBuffer::readPointerAtPositionWriteRead()
|
|||
QVERIFY(outData.buffer().startsWith(inData.buffer()));
|
||||
}
|
||||
|
||||
void tst_QRingBuffer::appendAndRead()
|
||||
{
|
||||
QRingBuffer ringBuffer;
|
||||
QByteArray ba1("Hello world!");
|
||||
QByteArray ba2("Test string.");
|
||||
QByteArray ba3("0123456789");
|
||||
ringBuffer.append(ba1);
|
||||
ringBuffer.append(ba2);
|
||||
ringBuffer.append(ba3);
|
||||
|
||||
QVERIFY(ringBuffer.read() == ba1);
|
||||
QVERIFY(ringBuffer.read() == ba2);
|
||||
QVERIFY(ringBuffer.read() == ba3);
|
||||
}
|
||||
|
||||
QTEST_APPLESS_MAIN(tst_QRingBuffer)
|
||||
#include "tst_qringbuffer.moc"
|
||||
|
|
|
|||
Loading…
Reference in New Issue