top: try avoiding the edge of a 'divide by zero' cliff <=== port of newlib 5f9185e0
______________________________ original newlib message ----------------------------------- ( minus git hash ) Darn, after testing on some older, out of date distros I was embarrassed to find some awful code I created in the commit shown below. I was rewarded with some 'nan' floating point values and 'inf' computational results. Reference(s); . a missed opportunity to repent commit ........................................ . true source of my original sin commit ........................................ Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
parent
cbc515e208
commit
ca182cb894
11
top/top.c
11
top/top.c
@ -6331,19 +6331,22 @@ static struct rx_st *sum_rx (struct graph_parms *these) {
|
|||||||
static __thread struct rx_st rx;
|
static __thread struct rx_st rx;
|
||||||
char buf1[SMLBUFSIZ], buf2[SMLBUFSIZ], buf3[MEDBUFSIZ];
|
char buf1[SMLBUFSIZ], buf2[SMLBUFSIZ], buf3[MEDBUFSIZ];
|
||||||
int ix, num1, num2, width;
|
int ix, num1, num2, width;
|
||||||
float scale;
|
float scale = 0.0;
|
||||||
|
|
||||||
scale = 100.0 / these->total;
|
if (these->total > 0)
|
||||||
|
scale = 100.0 / these->total;
|
||||||
rx.pcnt_one = scale * these->part1;
|
rx.pcnt_one = scale * these->part1;
|
||||||
rx.pcnt_two = scale * these->part2;
|
rx.pcnt_two = scale * these->part2;
|
||||||
if (rx.pcnt_one + rx.pcnt_two > 100.0 || rx.pcnt_two < 0)
|
if (rx.pcnt_one + rx.pcnt_two > 100.0 || rx.pcnt_two < 0)
|
||||||
rx.pcnt_two = 0;
|
rx.pcnt_two = 0;
|
||||||
rx.pcnt_tot = rx.pcnt_one + rx.pcnt_two;
|
rx.pcnt_tot = rx.pcnt_one + rx.pcnt_two;
|
||||||
|
|
||||||
num1 = (int)((rx.pcnt_one * these->adjust) + .5),
|
num1 = (int)((rx.pcnt_one * these->adjust) + .5);
|
||||||
num2 = (int)((rx.pcnt_two * these->adjust) + .5);
|
num2 = (int)((rx.pcnt_two * these->adjust) + .5);
|
||||||
if (num1 + num2 > these->length)
|
if (num1 + num2 > these->length) {
|
||||||
|
if (num1 > these->length) num1 = these->length;
|
||||||
num2 = these->length - num1;
|
num2 = these->length - num1;
|
||||||
|
}
|
||||||
|
|
||||||
width = these->length;
|
width = these->length;
|
||||||
buf1[0] = buf2[0] = buf3[0] = '\0';
|
buf1[0] = buf2[0] = buf3[0] = '\0';
|
||||||
|
Loading…
Reference in New Issue
Block a user