]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
Fix rounding in UTI_AddDoubleToTimeval with negative increments
authorMiroslav Lichvar <mlichvar@redhat.com>
Thu, 6 Jun 2013 14:30:37 +0000 (16:30 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Thu, 6 Jun 2013 14:30:37 +0000 (16:30 +0200)
util.c

diff --git a/util.c b/util.c
index 3ae06d808a74463c0f493082276f167cb9bdbc86..aedabebfa83508f42b4a119e6beadc0f8fdf4886 100644 (file)
--- 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;