From a090076e93487f8e461d9b866b9da1c0c21cb59b Mon Sep 17 00:00:00 2001 From: Edward Welbourne Date: Fri, 13 Oct 2017 18:10:39 +0200 Subject: Don't lose precision in QMacTimeZonePrivate::previousTransition() NSTimeInterval is a typedef for double, but the code stored its value in an int, and only then multiplied by 1000. Fix by only truncating NSTimeIntervals to int(64_t) *after* the multiplication by 1e3 to get milliseconds. While it's highly unlikely that a transition will have fractional seconds length, don't assume if you can just calculate the more exact result. Adapted-From: Marc Mutz Change-Id: I0911b9c945a94ca24c3dfb23ed6a849141076326 Reviewed-by: Jake Petroules --- src/corelib/tools/qtimezoneprivate_mac.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/corelib/tools') diff --git a/src/corelib/tools/qtimezoneprivate_mac.mm b/src/corelib/tools/qtimezoneprivate_mac.mm index 876dc2d877..fa0dd87cfc 100644 --- a/src/corelib/tools/qtimezoneprivate_mac.mm +++ b/src/corelib/tools/qtimezoneprivate_mac.mm @@ -295,7 +295,7 @@ QTimeZonePrivate::Data QMacTimeZonePrivate::previousTransition(qint64 beforeMSec break; } if (prevSecs < endSecs) // i.e. we did make it into that while loop - return data(qint64(prevSecs) * 1000); + return data(qint64(prevSecs * 1e3)); // No transition data; or first transition later than requested time. return invalidData(); -- cgit v1.2.3