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.

Change-Id: If99385142a049c5315429dca177df7fc8e947d55
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
Reviewed-by: Wolfgang Bremer <wbremer@rim.com>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
Fabian Bumberger 2013-03-03 15:06:40 +01:00 committed by The Qt Project
parent 4f60ff6ad3
commit 56820382f2

View File

@ -4050,6 +4050,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)