start-at-faketime startup fix, addresses #196

This commit is contained in:
Wolfgang Hommel
2019-08-04 17:59:33 +02:00
parent 579b908580
commit fe42c2b4cf

View File

@@ -2256,13 +2256,14 @@ int fake_clock_gettime(clockid_t clk_id, struct timespec *tp)
#ifdef CLOCK_REALTIME_COARSE
case CLOCK_REALTIME_COARSE:
#endif
if ((tp->tv_sec > ftpl_starttime.real.tv_sec) ||
((tp->tv_sec == ftpl_starttime.real.tv_sec) &&
(tp->tv_nsec > ftpl_starttime.real.tv_nsec))) {
timespecsub(tp, &ftpl_starttime.real, &tdiff);
if (((tp->tv_sec + 1 == ftpl_starttime.real.tv_sec) &&
(tp->tv_nsec < ftpl_starttime.real.tv_nsec)) ||
((tp->tv_sec == ftpl_starttime.real.tv_sec) &&
(tp->tv_nsec > ftpl_starttime.real.tv_nsec))) {
timespecsub(tp, &ftpl_starttime.real, &tdiff); /* regular case */
}
else {
timespecsub(&ftpl_starttime.real, tp, &tdiff);
timespecsub(&ftpl_starttime.real, tp, &tdiff); /* startup case */
}
break;
case CLOCK_MONOTONIC: