]> xenbits.xensource.com Git - libvirt.git/commitdiff
virhostuptime: Fix rounding in uptime calculation
authorTim Wiederhake <twiederh@redhat.com>
Mon, 1 Feb 2021 12:42:04 +0000 (13:42 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 2 Feb 2021 14:00:55 +0000 (15:00 +0100)
"f + 0.5" does not round correctly for values very close to
".5" for every integer multiple, e.g. "0.499999975".

Found by clang-tidy's "bugprone-incorrect-roundings" check.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
src/util/virhostuptime.c

index 696a38fbb5fde11064537e97244ad7b1b615ad13..7508a5a9b6369b7509c3761cb070f0e2038ca574 100644 (file)
@@ -32,6 +32,8 @@
 #include "virtime.h"
 #include "virthread.h"
 
+#include <math.h>
+
 #define VIR_FROM_THIS VIR_FROM_NONE
 
 VIR_LOG_INIT("util.virhostuptime");
@@ -76,7 +78,7 @@ virHostGetBootTimeProcfs(unsigned long long *btime)
         return -EINVAL;
     }
 
-    *btime = now / 1000 - up + 0.5;
+    *btime = llround(now / 1000 - up);
 
     return 0;
 }