From e2271f50ad5b73306dc11c8bf2be46d768c9026e Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Fri, 1 Aug 2014 15:02:20 -0700 Subject: [PATCH] Fix time zone issues in 32bit builds The bug is obvious, tracking it down wasn't. A simple thinko brought us time_t instead of timestamp_t - which doesn't matter on 64bit builds, but makes things fail in weird ways on 32bit builds - like our Windows binaries. In this case instead of checking today's date to detect the timezone offset we happened to be using a date in December 1969, so no dailight savings, so the times were off. Fixes #655 Fixes #667 See #670 Signed-off-by: Dirk Hohndel --- helpers.h | 2 +- qt-gui.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/helpers.h b/helpers.h index 06a431779..56532d5c4 100644 --- a/helpers.h +++ b/helpers.h @@ -27,7 +27,7 @@ void set_default_dive_computer(const char *vendor, const char *product); void set_default_dive_computer_device(const char *name); QString getSubsurfaceDataPath(QString folderToFind); extern const QString get_dc_nickname(const char *model, uint32_t deviceid); -int gettimezoneoffset(time_t when = 0); +int gettimezoneoffset(timestamp_t when = 0); int parseTemperatureToMkelvin(const QString &text); QString get_dive_date_string(timestamp_t when); QString get_short_dive_date_string(timestamp_t when); diff --git a/qt-gui.cpp b/qt-gui.cpp index 0f5342921..e337a5ddd 100644 --- a/qt-gui.cpp +++ b/qt-gui.cpp @@ -372,7 +372,7 @@ QString getSubsurfaceDataPath(QString folderToFind) return QString(""); } -int gettimezoneoffset(time_t when) +int gettimezoneoffset(timestamp_t when) { QDateTime dt1, dt2; if (when == 0) @@ -408,14 +408,14 @@ int parseTemperatureToMkelvin(const QString &text) QString get_dive_date_string(timestamp_t when) { QDateTime ts; - ts.setMSecsSinceEpoch(when * 1000); + ts.setMSecsSinceEpoch(when * 1000L); return loc.toString(ts.toUTC(), dateFormat + " " + timeFormat); } QString get_short_dive_date_string(timestamp_t when) { QDateTime ts; - ts.setMSecsSinceEpoch(when * 1000); + ts.setMSecsSinceEpoch(when * 1000L); return loc.toString(ts.toUTC(), shortDateFormat + " " + timeFormat); }