[chrony-dev] [PATCH] UTI_DoubleToTimeval() - fix rounding of negative numbers

[ Thread Index | Date Index | More chrony.tuxfamily.org/chrony-dev Archives ]


---
 util.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/util.c b/util.c
index 0add5df..8483626 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);
 }
 
-- 
2.3.2 (Apple Git-55)


-- 
To unsubscribe email chrony-dev-request@xxxxxxxxxxxxxxxxxxxx with "unsubscribe" in the subject.
For help email chrony-dev-request@xxxxxxxxxxxxxxxxxxxx with "help" in the subject.
Trouble?  Email listmaster@xxxxxxxxxxxxxxxxxxxx.


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/