diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2012-04-20 16:52:45 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-20 22:23:23 +0200 |
commit | 369863efefb3b63859b9de48915f5f3da65be76a (patch) | |
tree | a93721dd764c825487705637199ec2adb830a654 | |
parent | fffc900f78a191970c4eebced9c1af016a9ea6f4 (diff) |
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>
-rw-r--r-- | src/corelib/io/qdatastream.cpp | 3 | ||||
-rw-r--r-- | src/corelib/kernel/qvariant.cpp | 9 | ||||
-rw-r--r-- | tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp | 4 |
3 files changed, 8 insertions, 8 deletions
diff --git a/src/corelib/io/qdatastream.cpp b/src/corelib/io/qdatastream.cpp index 559c5a0743..0a49189310 100644 --- a/src/corelib/io/qdatastream.cpp +++ b/src/corelib/io/qdatastream.cpp @@ -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. diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp index c363be86c8..18bef1b4b6 100644 --- a/src/corelib/kernel/qvariant.cpp +++ b/src/corelib/kernel/qvariant.cpp @@ -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; } diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp index 91b56e4e9b..dca2ee36a6 100644 --- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp +++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp @@ -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 |