summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/corelib/time/qtimezoneprivate_win.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/corelib/time/qtimezoneprivate_win.cpp b/src/corelib/time/qtimezoneprivate_win.cpp
index 25a2ba5a39..d71508a806 100644
--- a/src/corelib/time/qtimezoneprivate_win.cpp
+++ b/src/corelib/time/qtimezoneprivate_win.cpp
@@ -344,6 +344,7 @@ struct TransitionTimePair
qint64 std, dst;
// If either is invalidMSecs(), which shall then be < the other, there is no
// DST and the other describes a change in actual standard offset.
+ bool fakesDst = false;
TransitionTimePair(const QWinTimeZonePrivate::QWinTransitionRule &rule,
int year, int oldYearOffset)
@@ -401,19 +402,17 @@ struct TransitionTimePair
if (rule.standardTimeBias + rule.daylightTimeBias == oldYearOffset
&& isAtStartOfYear(rule.daylightTimeRule, year)) {
dst = QTimeZonePrivate::invalidMSecs();
+ fakesDst = true;
}
if (rule.standardTimeBias == oldYearOffset
&& isAtStartOfYear(rule.standardTimeRule, year)) {
+ Q_ASSERT_X(!fakesDst, "TransitionTimePair",
+ "Year with (DST bias zero and) both transitions fake !");
std = QTimeZonePrivate::invalidMSecs();
+ fakesDst = true;
}
}
- bool fakesDst() const
- {
- return std == QTimeZonePrivate::invalidMSecs()
- || dst == QTimeZonePrivate::invalidMSecs();
- }
-
bool startsInDst() const
{
// Year starts in daylightTimeRule iff it has a valid transition out of
@@ -428,9 +427,9 @@ struct TransitionTimePair
auto time = isDst ? dst : std;
// The isDst we're asked for may be set to the valid one of dst and
// std, when fake, but not always - so make sure:
- if (time == QTimeZonePrivate::invalidMSecs())
+ if (fakesDst && time == QTimeZonePrivate::invalidMSecs())
time = isDst ? std : dst;
- return tzp->ruleToData(rule, time, type, fakesDst());
+ return tzp->ruleToData(rule, time, type, fakesDst);
}
};
@@ -681,7 +680,7 @@ QTimeZonePrivate::Data QWinTimeZonePrivate::data(qint64 forMSecsSinceEpoch) cons
}
return ruleToData(rule, forMSecsSinceEpoch,
isDst ? QTimeZone::DaylightTime : QTimeZone::StandardTime,
- pair.fakesDst());
+ pair.fakesDst);
}
// Fell off start of rule, try previous rule.
} else {