diff --git a/cpuid_arm64.c b/cpuid_arm64.c index e36213e17..250d314c0 100644 --- a/cpuid_arm64.c +++ b/cpuid_arm64.c @@ -91,18 +91,21 @@ int detect(void) #ifdef linux FILE *infile; - char buffer[512], *p, *cpu_part, *cpu_implementer; + char buffer[512], *p, *cpu_part = NULL, *cpu_implementer = NULL; p = (char *) NULL ; infile = fopen("/proc/cpuinfo", "r"); while (fgets(buffer, sizeof(buffer), infile)) { + if ((cpu_part != NULL) && (cpu_implementer != NULL)) { + break; + } - if (!strncmp("CPU part", buffer, 8)) { + if ((cpu_part == NULL) && !strncmp("CPU part", buffer, 8)) { cpu_part = strchr(buffer, ':') + 2; - break; - } else if (!strncmp("CPU implementer", buffer, 15)) { + cpu_part = strdup(cpu_part); + } else if ((cpu_implementer == NULL) && !strncmp("CPU implementer", buffer, 15)) { cpu_implementer = strchr(buffer, ':') + 2; - break; + cpu_implementer = strdup(cpu_implementer); } }