diff --git a/server/timer.c b/server/timer.c index ffa4b0354bddae765d362b300e85bca0275366c6..05c0e81afd68c363c17c140af3dba28dae8ef7d9 100644 --- a/server/timer.c +++ b/server/timer.c @@ -164,8 +164,7 @@ static int set_timer( struct timer *timer, timeout_t expire, unsigned int period period = 0; /* period doesn't make any sense for a manual timer */ timer->signaled = 0; } - if (expire > 0 && expire < current_time) expire = current_time; - timer->when = expire; + timer->when = (expire <= 0) ? current_time - expire : max( expire, current_time ); timer->period = period; timer->callback = callback; timer->arg = arg;