diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libfaketime.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/libfaketime.c b/src/libfaketime.c index 0c28e5f..684f153 100644 --- a/src/libfaketime.c +++ b/src/libfaketime.c @@ -1725,6 +1725,21 @@ int select(int nfds, fd_set *readfds, #else DONT_FAKE_TIME(ret = (*real_select)(nfds, readfds, writefds, errorfds, timeout == NULL ? timeout : &timeout_real)); #endif + + /* scale timeout back if user rate is set, #382 */ + if (user_rate_set && (timeout != NULL)) + { + struct timespec ts; + + ts.tv_sec = timeout_real.tv_sec; + ts.tv_nsec = timeout_real.tv_usec * 1000; + + timespecmul(&ts, user_rate, &ts); + + timeout->tv_sec = ts.tv_sec; + timeout->tv_usec = ts.tv_nsec / 1000; + } + return ret; } |