aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/v4
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-06-27 14:04:08 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-06-27 18:16:43 +0200
commit73649e80c03872851f3b5ad96e061d1b347612b5 (patch)
tree2de08d79608bb090ac9378d21e09c3ba614858dc /src/qml/qml/v4
parent36d45a1585d3ed67f28d23d3f619aca1fe61a013 (diff)
Fix daylight savings code on Windows altogether
Reverted the previous change, the local timezone adjustment should not include the daylight savings, because in a long running program that runs across the DST boundary, the timezone doesn't change, but the DST adjustment does. That is why LocalTZA is always used in conjunction with a call to DaylightSavingTA, which unfortunately had a silly bug on Windows: It was assumed that _localtime64_s returns zero on failure, similar to localtime_r on Unix. However it is exactly the opposite, zero is returned on success and an error code is returned on failure. Change-Id: Ib324f09f290870630b66793882c5b121de445f05 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/qml/v4')
-rw-r--r--src/qml/qml/v4/qv4dateobject.cpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/src/qml/qml/v4/qv4dateobject.cpp b/src/qml/qml/v4/qv4dateobject.cpp
index b40820a7a0..3cf6cb1aeb 100644
--- a/src/qml/qml/v4/qv4dateobject.cpp
+++ b/src/qml/qml/v4/qv4dateobject.cpp
@@ -299,7 +299,8 @@ static inline double DaylightSavingTA(double t)
struct tm tmtm;
#if defined(_MSC_VER) && _MSC_VER >= 1400
__time64_t tt = (__time64_t)(t / msPerSecond);
- if (!_localtime64_s(&tmtm, &tt))
+ // _localtime_64_s returns non-zero on failure
+ if (_localtime64_s(&tmtm, &tt) != 0)
#else
long int tt = (long int)(t / msPerSecond);
if (!localtime_r((const time_t*) &tt, &tmtm))
@@ -634,10 +635,8 @@ static double getLocalTZA()
return double(locl - globl) * 1000.0;
#else
TIME_ZONE_INFORMATION tzInfo;
- LONG daylightBias = 0;
- if (GetTimeZoneInformation(&tzInfo) == TIME_ZONE_ID_DAYLIGHT)
- daylightBias = tzInfo.DaylightBias;
- return -(tzInfo.Bias + daylightBias)* 60.0 * 1000.0;
+ GetTimeZoneInformation(&tzInfo);
+ return -tzInfo.Bias * 60.0 * 1000.0;
#endif
}