Change POSIX current time query to use clock_gettime()
As noted on its man-page, POSIX.1-2008 marks gettimeofday() as obsolete, recommending the use of clock_gettime(2) instead. So do that. Also check the return value - albeit all we can do on failure (which should not happen) is assert. Pick-to: 6.5 Change-Id: Id5d6922c974b87f09531d549d692b051c32388ee Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 4366487e79f84fb381e33207cbc7c28107aea561) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
ca80d4ff09
commit
c298d56993
@ -4974,7 +4974,7 @@ qint64 QDateTime::currentSecsSinceEpoch() noexcept
|
||||
daysAfterEpoch * SECS_PER_DAY;
|
||||
}
|
||||
|
||||
#elif defined(Q_OS_UNIX)
|
||||
#elif defined(Q_OS_UNIX) // Assume POSIX-compliant
|
||||
QDate QDate::currentDate()
|
||||
{
|
||||
return QDateTime::currentDateTime().date();
|
||||
@ -4992,18 +4992,18 @@ QDateTime QDateTime::currentDateTime(const QTimeZone &zone)
|
||||
|
||||
qint64 QDateTime::currentMSecsSinceEpoch() noexcept
|
||||
{
|
||||
// posix compliant system
|
||||
// we have milliseconds
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, nullptr);
|
||||
return tv.tv_sec * MSECS_PER_SEC + tv.tv_usec / 1000;
|
||||
struct timespec when;
|
||||
if (clock_gettime(CLOCK_REALTIME, &when) == 0) // should always succeed
|
||||
return when.tv_sec * MSECS_PER_SEC + (when.tv_nsec + 500'000) / 1'000'000;
|
||||
Q_UNREACHABLE_RETURN(0);
|
||||
}
|
||||
|
||||
qint64 QDateTime::currentSecsSinceEpoch() noexcept
|
||||
{
|
||||
struct timeval tv;
|
||||
gettimeofday(&tv, nullptr);
|
||||
return tv.tv_sec;
|
||||
struct timespec when;
|
||||
if (clock_gettime(CLOCK_REALTIME, &when) == 0) // should always succeed
|
||||
return when.tv_sec;
|
||||
Q_UNREACHABLE_RETURN(0);
|
||||
}
|
||||
#else
|
||||
#error "What system is this?"
|
||||
|
Loading…
x
Reference in New Issue
Block a user