QCborStreamReader: make sure setDevice() clears the last error

The unit tests weren't running into this problem because the every
setDevice() was preceded by the object being initialized with the exact
same data, so there was never a previous error state. I've only changed
a couple of tests, left the other setDevice() unchanged so we test both
behaviors.

Fixes: QTBUG-71426
Change-Id: I1bd327aeaf73421a8ec5fffd1561a590e3933376
Reviewed-by: Nils Jeisecke <nils.jeisecke@saltation.com>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
bb10
Thiago Macieira 2018-10-27 19:43:09 -07:00
parent c0b1230108
commit e7998dc187
2 changed files with 4 additions and 2 deletions

View File

@ -1779,6 +1779,8 @@ public:
preread();
if (CborError err = cbor_parser_init_reader(nullptr, &parser, &currentElement, this))
handleError(err);
else
lastError = { QCborError::NoError };
}
char *bufferPtr()

View File

@ -269,7 +269,7 @@ void tst_QCborStreamReader::integers()
quint64 absolute = (isNegative ? expectedRaw + 1 : expectedRaw);
QBuffer buffer(&data);
QCborStreamReader reader(data);
QCborStreamReader reader(useDevice ? QByteArray() : data);
if (useDevice) {
buffer.open(QIODevice::ReadOnly);
reader.setDevice(&buffer);
@ -605,7 +605,7 @@ void tst_QCborStreamReader::fixed()
removeIndicators(expected);
QBuffer buffer(&data);
QCborStreamReader reader(data);
QCborStreamReader reader(useDevice ? QByteArray() : data);
if (useDevice) {
buffer.open(QIODevice::ReadOnly);
reader.setDevice(&buffer);