Don't push unnecessary data to a data stream for QVariant()

Adjust the test because we don't read past the end anymore.

Task-number: QTBUG-25108
Change-Id: I8243f1d5ae79d1256aab2cb1132598a716a7eeeb
Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
bb10
Thiago Macieira 2012-04-20 16:52:45 +02:00 committed by Qt by Nokia
parent fffc900f78
commit 369863efef
3 changed files with 8 additions and 8 deletions

View File

@ -253,9 +253,6 @@ enum {
DefaultStreamVersion = QDataStream::Qt_5_0
};
// ### 5.0: when streaming invalid QVariants, just the type should
// be written, no "data" after it
/*!
Constructs a data stream that has no I/O device.

View File

@ -1705,9 +1705,11 @@ void QVariant::load(QDataStream &s)
d.is_null = is_null;
if (!isValid()) {
if (s.version() < QDataStream::Qt_5_0) {
// Since we wrote something, we should read something
QString x;
s >> x;
QString x;
s >> x;
}
d.is_null = true;
return;
}
@ -1769,7 +1771,8 @@ void QVariant::save(QDataStream &s) const
}
if (!isValid()) {
s << QString();
if (s.version() < QDataStream::Qt_5_0)
s << QString();
return;
}

View File

@ -2901,13 +2901,13 @@ void tst_QVariant::loadUnknownUserType()
void tst_QVariant::loadBrokenUserType()
{
char data[] = {0, 0, 0, 127, 0, 112 };
char data[] = {0, 0, 0, 127, 0 };
QByteArray ba(data, sizeof(data));
QDataStream ds(&ba, QIODevice::ReadOnly);
QVariant var;
var.load(ds);
QCOMPARE(ds.status(), QDataStream::ReadPastEnd);
QCOMPARE(ds.status(), QDataStream::Ok);
}
void tst_QVariant::invalidDate() const