From ea2f597bb0be06ffd7353f6bc257e9d525039674 Mon Sep 17 00:00:00 2001 From: Fabian Bumberger Date: Wed, 6 Mar 2013 17:13:31 +0100 Subject: Workaround a bug in mktime on QNX Under certain circumstances, mktime failes to convert the tm struct into secs since epoch. This is a workaround and fixes the qdatetime and qqmllocale autotests. Backport of: 56820382f26 Change-Id: I7d819aad2d6901cd096b441f2c18fd97108d9abb Reviewed-by: Mehdi Fekari Reviewed-by: Wolfgang Bremer Reviewed-by: Thomas McGuire Reviewed-by: Thiago Macieira --- src/corelib/tools/qdatetime.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp index 534b9ba..18a0c05 100644 --- a/src/corelib/tools/qdatetime.cpp +++ b/src/corelib/tools/qdatetime.cpp @@ -4116,6 +4116,16 @@ static void localToUtc(QDate &date, QTime &time, int isdst) _tzset(); #endif time_t secsSince1Jan1970UTC = mktime(&localTM); +#ifdef Q_OS_QNX + //mktime sometimes fails on QNX. Following workaround converts the date and time then manually + if (secsSince1Jan1970UTC == (time_t)-1) { + QDateTime tempTime = QDateTime(date, time, Qt::UTC);; + tempTime = tempTime.addMSecs(timezone * 1000); + date = tempTime.date(); + time = tempTime.time(); + return; + } +#endif #endif tm *brokenDown = 0; #if defined(Q_OS_WINCE) -- cgit v0.12