diff options
author | Ruslan Ermilov <ru@FreeBSD.org> | 2008-04-10 16:17:54 +0000 |
---|---|---|
committer | Ruslan Ermilov <ru@FreeBSD.org> | 2008-04-10 16:17:54 +0000 |
commit | f89db4357eb00e15bce97d8eafeea8d51912789d (patch) | |
tree | 8cdf4eefadde298cef55697c2f881b88156f3381 /usr.bin | |
parent | f4d2c7f13ee691c3d6c331be056a791d005ed7a8 (diff) | |
download | src-f89db4357eb00e15bce97d8eafeea8d51912789d.tar.gz src-f89db4357eb00e15bce97d8eafeea8d51912789d.zip |
Fix "top -P" (`&' mistyped as `&&' and a botched logic).
The bug was unnoticed on non-i386 because mp_maxid is
initialized differently, kern.cp_times doesn't print
zeroes for non-existing CPUs, so no "writing outside of
array bounds" happens.
MFC after: 3 days
Notes
Notes:
svn path=/head/; revision=178071
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/top/machine.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/usr.bin/top/machine.c b/usr.bin/top/machine.c index f0420799e440..21bf033edc89 100644 --- a/usr.bin/top/machine.c +++ b/usr.bin/top/machine.c @@ -413,14 +413,15 @@ get_system_info(struct system_info *si) si->load_avg[i] = (double)sysload.ldavg[i] / sysload.fscale; if (pcpu_stats) { - for (i = j = 0; i <= maxid; i++, j++) { - if (cpumask && (1ul << i) == 0) + for (i = j = 0; i <= maxid; i++) { + if ((cpumask & (1ul << i)) == 0) continue; /* convert cp_time counts to percentages */ percentages(CPUSTATES, &pcpu_cpu_states[j * CPUSTATES], &pcpu_cp_time[j * CPUSTATES], &pcpu_cp_old[j * CPUSTATES], &pcpu_cp_diff[j * CPUSTATES]); + j++; } } else { /* convert cp_time counts to percentages */ |