Skip to content

Commit

Permalink
8268361: Fix the infinite loop in next_line
Browse files Browse the repository at this point in the history
Reviewed-by: dholmes, sgehwolf, sspitsyn
  • Loading branch information
UncleNine authored and jerboaa committed Jun 10, 2021
1 parent b018c45 commit 7267227
Showing 1 changed file with 15 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,13 @@ static struct perfbuf {
#define DEC_64 "%"SCNd64
#define NS_PER_SEC 1000000000

static void next_line(FILE *f) {
while (fgetc(f) != '\n');
static int next_line(FILE *f) {
int c;
do {
c = fgetc(f);
} while (c != '\n' && c != EOF);

return c;
}

/**
Expand Down Expand Up @@ -93,7 +98,10 @@ static int get_totalticks(int which, ticks *pticks) {
&iowTicks, &irqTicks, &sirqTicks);

// Move to next line
next_line(fh);
if (next_line(fh) == EOF) {
fclose(fh);
return -2;
}

//find the line for requested cpu faster to just iterate linefeeds?
if (which != -1) {
Expand All @@ -106,7 +114,10 @@ static int get_totalticks(int which, ticks *pticks) {
fclose(fh);
return -2;
}
next_line(fh);
if (next_line(fh) == EOF) {
fclose(fh);
return -2;
}
}
n = fscanf(fh, "cpu%*d " DEC_64 " " DEC_64 " " DEC_64 " " DEC_64 " "
DEC_64 " " DEC_64 " " DEC_64 "\n",
Expand Down

1 comment on commit 7267227

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.