Skip to content

Commit 0c00275

Browse files
cgzonesBenBE
authored andcommitted
darwin: avoid double division by zero on startup
1 parent 6f14269 commit 0c00275

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

darwin/Platform.c

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -272,12 +272,18 @@ double Platform_setCPUValues(Meter* mtr, unsigned int cpu) {
272272
total += (double)curr->cpu_ticks[i] - (double)prev->cpu_ticks[i];
273273
}
274274

275-
mtr->values[CPU_METER_NICE]
276-
= ((double)curr->cpu_ticks[CPU_STATE_NICE] - (double)prev->cpu_ticks[CPU_STATE_NICE]) * 100.0 / total;
277-
mtr->values[CPU_METER_NORMAL]
278-
= ((double)curr->cpu_ticks[CPU_STATE_USER] - (double)prev->cpu_ticks[CPU_STATE_USER]) * 100.0 / total;
279-
mtr->values[CPU_METER_KERNEL]
280-
= ((double)curr->cpu_ticks[CPU_STATE_SYSTEM] - (double)prev->cpu_ticks[CPU_STATE_SYSTEM]) * 100.0 / total;
275+
if (total > 1e-6) {
276+
mtr->values[CPU_METER_NICE]
277+
= ((double)curr->cpu_ticks[CPU_STATE_NICE] - (double)prev->cpu_ticks[CPU_STATE_NICE]) * 100.0 / total;
278+
mtr->values[CPU_METER_NORMAL]
279+
= ((double)curr->cpu_ticks[CPU_STATE_USER] - (double)prev->cpu_ticks[CPU_STATE_USER]) * 100.0 / total;
280+
mtr->values[CPU_METER_KERNEL]
281+
= ((double)curr->cpu_ticks[CPU_STATE_SYSTEM] - (double)prev->cpu_ticks[CPU_STATE_SYSTEM]) * 100.0 / total;
282+
} else {
283+
mtr->values[CPU_METER_NICE] = 0.0;
284+
mtr->values[CPU_METER_NORMAL] = 0.0;
285+
mtr->values[CPU_METER_KERNEL] = 0.0;
286+
}
281287

282288
mtr->curItems = 3;
283289

0 commit comments

Comments
 (0)