Skip to content

Commit

Permalink
8268361: Fix the infinite loop in next_line
Browse files Browse the repository at this point in the history
Backport-of: 7267227
  • Loading branch information
jankratochvil authored and Yuri Nesterenko committed Nov 9, 2022
1 parent c09c433 commit 6664437
Showing 1 changed file with 15 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,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 @@ -91,7 +96,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 @@ -104,7 +112,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 6664437

@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.