summaryrefslogtreecommitdiffstats
path: root/src/corelib/tools/qdatetime.cpp
diff options
context:
space:
mode:
authorDavid Faure <david.faure@kdab.com>2016-07-01 13:49:46 +0200
committerDavid Faure <david.faure@kdab.com>2016-07-02 08:13:44 +0000
commit1af4916e11c1251b2957a909f819678e9fd32feb (patch)
treeb814a1328f1557ae4892b3439d9a855bb59122f4 /src/corelib/tools/qdatetime.cpp
parent9964b850ad9c322ab842bbd5941976b3d613f5f6 (diff)
QTime: restore Qt3 compatibility in the QDataStream operators
A Qt5 program writing a null QTime() using setVersion(QDataStream::Qt_3_3), and then a Qt3 program reading that, would lead to a weird QTime, with isNull=false, isValid=false, hour=1193, minute=2, second=47, ms=295. This commit restores interoperability, by writing out the expected value (0) for a null QTime rather than the -1 value used by Qt4 and Qt5. Change-Id: Icde468a8f6fc9434ef7018296725819b44d672af Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/tools/qdatetime.cpp')
-rw-r--r--src/corelib/tools/qdatetime.cpp14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index fb679e56c5..e6d0b97836 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -4759,7 +4759,12 @@ QDataStream &operator>>(QDataStream &in, QDate &date)
QDataStream &operator<<(QDataStream &out, const QTime &time)
{
- return out << quint32(time.mds);
+ if (out.version() >= QDataStream::Qt_4_0) {
+ return out << quint32(time.mds);
+ } else {
+ // Qt3 had no support for reading -1, QTime() was valid and serialized as 0
+ return out << quint32(time.isNull() ? 0 : time.mds);
+ }
}
/*!
@@ -4774,7 +4779,12 @@ QDataStream &operator>>(QDataStream &in, QTime &time)
{
quint32 ds;
in >> ds;
- time.mds = int(ds);
+ if (in.version() >= QDataStream::Qt_4_0) {
+ time.mds = int(ds);
+ } else {
+ // Qt3 would write 0 for a null time
+ time.mds = (ds == 0) ? QTime::NullTime : int(ds);
+ }
return in;
}