aboutsummaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorRuslan Ermilov <ru@FreeBSD.org>2008-04-10 16:17:54 +0000
committerRuslan Ermilov <ru@FreeBSD.org>2008-04-10 16:17:54 +0000
commitf89db4357eb00e15bce97d8eafeea8d51912789d (patch)
tree8cdf4eefadde298cef55697c2f881b88156f3381 /usr.bin
parentf4d2c7f13ee691c3d6c331be056a791d005ed7a8 (diff)
downloadsrc-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.c5
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 */