summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2012-04-20 16:52:45 +0200
committerQt by Nokia <qt-info@nokia.com>2012-04-20 22:23:23 +0200
commit369863efefb3b63859b9de48915f5f3da65be76a (patch)
treea93721dd764c825487705637199ec2adb830a654
parentfffc900f78a191970c4eebced9c1af016a9ea6f4 (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.cpp3
-rw-r--r--src/corelib/kernel/qvariant.cpp9
-rw-r--r--tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp4
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