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