From: Bryan Christianson Date: Thu, 23 Jul 2015 11:59:31 +0000 (+1200) Subject: util: fix rounding of negative numbers in UTI_DoubleToTimeval() X-Git-Tag: 2.2-pre1~107 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0fc0f906e12c724a7793c37be9559b9b88a13b70;p=thirdparty%2Fchrony.git util: fix rounding of negative numbers in UTI_DoubleToTimeval() --- diff --git a/util.c b/util.c index 0ebebff2..e89b5f3b 100644 --- a/util.c +++ b/util.c @@ -46,11 +46,13 @@ UTI_TimevalToDouble(struct timeval *a, double *b) INLINE_STATIC void UTI_DoubleToTimeval(double a, struct timeval *b) { - long int_part, frac_part; + long int_part; + double frac_part; int_part = (long)(a); - frac_part = (long)(0.5 + 1.0e6 * (a - (double)(int_part))); + frac_part = 1.0e6 * (a - (double)(int_part)); + frac_part = frac_part > 0 ? frac_part + 0.5 : frac_part - 0.5; b->tv_sec = int_part; - b->tv_usec = frac_part; + b->tv_usec = (long)frac_part; UTI_NormaliseTimeval(b); }