Skip to content
This repository has been archived by the owner on Feb 2, 2023. It is now read-only.

Commit

Permalink
8268361: Fix the infinite loop in next_line
Browse files Browse the repository at this point in the history
Backport-of: 72672277e4dddf8e72f1c705cd5f57de40745635
  • Loading branch information
wkia authored and Yuri Nesterenko committed Aug 31, 2022
1 parent 899d5f8 commit 8392a31
Showing 1 changed file with 15 additions and 4 deletions.
Expand Up @@ -62,8 +62,13 @@ static struct perfbuf {

#define DEC_64 "%"SCNd64

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 @@ -92,7 +97,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 @@ -105,7 +113,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 8392a31

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