diff options
Diffstat (limited to 'src/corelib/tools/qtimezoneprivate.cpp')
-rw-r--r-- | src/corelib/tools/qtimezoneprivate.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/corelib/tools/qtimezoneprivate.cpp b/src/corelib/tools/qtimezoneprivate.cpp index 7b780ecf7d..1a5135f103 100644 --- a/src/corelib/tools/qtimezoneprivate.cpp +++ b/src/corelib/tools/qtimezoneprivate.cpp @@ -258,6 +258,8 @@ QTimeZonePrivate::Data QTimeZonePrivate::dataForLocalTime(qint64 forLocalMSecs, brackets the correct time and at most one DST transition. */ const qint64 sixteenHoursInMSecs(16 * 3600 * 1000); + Q_STATIC_ASSERT(-sixteenHoursInMSecs / 1000 < QTimeZone::MinUtcOffsetSecs + && sixteenHoursInMSecs / 1000 > QTimeZone::MaxUtcOffsetSecs); /* Offsets are Local - UTC, positive to the east of Greenwich, negative to the west; DST offset always exceeds standard offset, when DST applies. @@ -327,7 +329,7 @@ QTimeZonePrivate::Data QTimeZonePrivate::dataForLocalTime(qint64 forLocalMSecs, // Only around the transition times might we need another. Data tran = previousTransition(forLocalMSecs - sixteenHoursInMSecs); Q_ASSERT(forLocalMSecs < 0 || // Pre-epoch TZ info may be unavailable - forLocalMSecs >= tran.atMSecsSinceEpoch + tran.offsetFromUtc * 1000); + forLocalMSecs - tran.offsetFromUtc * 1000 >= tran.atMSecsSinceEpoch); Data nextTran = nextTransition(tran.atMSecsSinceEpoch); /* Now walk those forward until they bracket forLocalMSecs with transitions. @@ -361,7 +363,7 @@ QTimeZonePrivate::Data QTimeZonePrivate::dataForLocalTime(qint64 forLocalMSecs, fail life's tricky. */ Q_ASSERT(forLocalMSecs < 0 - || forLocalMSecs > tran.atMSecsSinceEpoch + tran.offsetFromUtc * 1000); + || forLocalMSecs - tran.offsetFromUtc * 1000 > tran.atMSecsSinceEpoch); const qint64 nextStart = nextTran.atMSecsSinceEpoch; // Work out the UTC values it might make sense to return: nextTran.atMSecsSinceEpoch = forLocalMSecs - nextTran.offsetFromUtc * 1000; |