diff options
author | Qin Fandong <shell_way@foxmail.com> | 2023-01-18 17:02:53 +1100 |
---|---|---|
committer | Craig Small <csmall@dropbear.xyz> | 2023-01-18 17:02:53 +1100 |
commit | 0a5ccbdd4273f063344b70be15fb22f3e7c250a6 (patch) | |
tree | 853185ed77adac664c6dc4bff8c3151ea3f09b16 /src/vmstat.c | |
parent | 68e2c0fc53c78217d5fb3bfbb6f73a6e5d0e39bd (diff) | |
download | procps-ng-0a5ccbdd4273f063344b70be15fb22f3e7c250a6.tar.gz |
vmstat: precision issues in unitConvert()
Fix conversion errors due to precision issues in function unitConvert
For example: unitConvert(98720620) will return 98720624, not 98720620.
Because we do (unsigned long)(float)98720620 in function unitConvert
and this is wrong! We should do (unsigned long)(double)98720620 here.
Signed-off-by: Craig Small <csmall@dropbear.xyz>
References:
procps-ng/procps!75
Diffstat (limited to 'src/vmstat.c')
-rw-r--r-- | src/vmstat.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/vmstat.c b/src/vmstat.c index b4bcb8f..eed130c 100644 --- a/src/vmstat.c +++ b/src/vmstat.c @@ -336,8 +336,8 @@ static void new_header(void) static unsigned long unitConvert(unsigned long size) { - float cvSize; - cvSize = (float)size / dataUnit * ((statMode == SLABSTAT) ? 1 : 1024); + double cvSize; + cvSize = (double)size / dataUnit * ((statMode == SLABSTAT) ? 1 : 1024); return ((unsigned long)cvSize); } |