tload: fix lockup
It looks like an off by one error was added to tload a couple years ago while removing goto statements. This causes tload to go into an endless loop when the load is just under a scale change integer. eg: .99, 1.99, 3.99, 7.99 to reproduce you can add, just under the loadavg at line 170 in tload.c: av[0] = 1.99; or get the load to that level separately. The patch below makes the code more like the original, but without the goto statements. This can also be fixed by just changing line 183 in tload.c from "if (0 < row)" -> "if (0 <= row)".
This commit is contained in:
parent
00279d692a
commit
2f975ba49d
6
tload.c
6
tload.c
@ -169,7 +169,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
loadavg(&av[0], &av[1], &av[2]);
|
loadavg(&av[0], &av[1], &av[2]);
|
||||||
|
|
||||||
while (1) {
|
do {
|
||||||
lines = av[0] * scale_fact;
|
lines = av[0] * scale_fact;
|
||||||
row = nrows - 1;
|
row = nrows - 1;
|
||||||
|
|
||||||
@ -180,9 +180,7 @@ int main(int argc, char **argv)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (0 < row)
|
} while (0 <= lines);
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (row >= 0)
|
while (row >= 0)
|
||||||
*(screen + row-- * ncols + col) = ' ';
|
*(screen + row-- * ncols + col) = ' ';
|
||||||
|
Loading…
Reference in New Issue
Block a user