From 62027f1b47ada22a910d02d7eb953d2e6a45bf84 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Thu, 6 Jun 2013 16:30:37 +0200 Subject: [PATCH] Fix rounding in UTI_AddDoubleToTimeval with negative increments --- util.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/util.c b/util.c index 3ae06d8..aedabeb 100644 --- a/util.c +++ b/util.c @@ -135,7 +135,8 @@ UTI_AddDoubleToTimeval(struct timeval *start, is too marginal here. */ int_part = (long) increment; - frac_part = (long) (0.5 + 1.0e6 * (increment - (double)int_part)); + increment = (increment - int_part) * 1.0e6; + frac_part = (long) (increment > 0.0 ? increment + 0.5 : increment - 0.5); end->tv_sec = int_part + start->tv_sec; end->tv_usec = frac_part + start->tv_usec;