From 369863efefb3b63859b9de48915f5f3da65be76a Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Fri, 20 Apr 2012 16:52:45 +0200 Subject: [PATCH] Don't push unnecessary data to a data stream for QVariant() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Adjust the test because we don't read past the end anymore. Task-number: QTBUG-25108 Change-Id: I8243f1d5ae79d1256aab2cb1132598a716a7eeeb Reviewed-by: Jędrzej Nowacki --- src/corelib/io/qdatastream.cpp | 3 --- src/corelib/kernel/qvariant.cpp | 9 ++++++--- 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 559c5a0..0a49189 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 c363be8..18bef1b 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 91b56e4..dca2ee3 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 -- 2.7.4