From cdadee630e09fc2aa966244a71bf22236f9a30a4 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Wed, 6 Jun 2012 11:48:46 -0700 Subject: Fix some divide by zero errors that could crash the system. Change-Id: I66273df84e45de59b5b161f4d13de67a9e0f46d5 --- core/java/com/android/internal/os/ProcessStats.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core/java/com/android/internal/os/ProcessStats.java b/core/java/com/android/internal/os/ProcessStats.java index e0e9a29..1923b86 100644 --- a/core/java/com/android/internal/os/ProcessStats.java +++ b/core/java/com/android/internal/os/ProcessStats.java @@ -619,8 +619,11 @@ public class ProcessStats { } final public float getTotalCpuPercent() { - return ((float)(mRelUserTime+mRelSystemTime+mRelIrqTime)*100) - / (mRelUserTime+mRelSystemTime+mRelIrqTime+mRelIdleTime); + int denom = mRelUserTime+mRelSystemTime+mRelIrqTime+mRelIdleTime; + if (denom <= 0) { + return 0; + } + return ((float)(mRelUserTime+mRelSystemTime+mRelIrqTime)*100) / denom; } final void buildWorkingProcs() { @@ -699,7 +702,7 @@ public class ProcessStats { long sampleTime = mCurrentSampleTime - mLastSampleTime; long sampleRealTime = mCurrentSampleRealTime - mLastSampleRealTime; - long percAwake = (sampleTime*100) / sampleRealTime; + long percAwake = sampleRealTime > 0 ? ((sampleTime*100) / sampleRealTime) : 0; if (percAwake != 100) { pw.print(" with "); pw.print(percAwake); -- cgit v1.1