diff --git a/linux/LinuxProcessList.c b/linux/LinuxProcessList.c index 046e1864..c4b7ebc7 100644 --- a/linux/LinuxProcessList.c +++ b/linux/LinuxProcessList.c @@ -167,11 +167,11 @@ static void LinuxProcessList_updateCPUcount(ProcessList* super) { DIR* dir = opendir("/sys/devices/system/cpu"); if (!dir) { - super->activeCPUs = 1; - super->existingCPUs = 1; - this->cpuData = xReallocArray(this->cpuData, 2, sizeof(CPUData)); + this->cpuData = xReallocArrayZero(this->cpuData, super->existingCPUs ? (super->existingCPUs + 1) : 0, 2, sizeof(CPUData)); this->cpuData[0].online = true; /* average is always "online" */ this->cpuData[1].online = true; + super->activeCPUs = 1; + super->existingCPUs = 1; return; } @@ -204,10 +204,7 @@ static void LinuxProcessList_updateCPUcount(ProcessList* super) { /* readdir() iterates with no specific order */ unsigned int max = MAXIMUM(existing, id + 1); if (max > currExisting) { - this->cpuData = xReallocArray(this->cpuData, max + /* aggregate */ 1, sizeof(CPUData)); - for (unsigned int j = currExisting; j < max; j++) { - this->cpuData[j].online = false; - } + this->cpuData = xReallocArrayZero(this->cpuData, currExisting ? (currExisting + 1) : 0, max + /* aggregate */ 1, sizeof(CPUData)); this->cpuData[0].online = true; /* average is always "online" */ currExisting = max; }