From a426817a06ed228cc52097c866a7d263bddadbb8 Mon Sep 17 00:00:00 2001 From: Adam Lesinski Date: Fri, 29 Jan 2016 12:13:54 -0800 Subject: [PATCH] BatteryStats: Fix DivideByZero error As we hand out proportional blame to apps for transmitting/receiving packets, make sure to check that the total packets sent never becomes zero. Bug:26873610 Change-Id: I3e0fc3c9e8d4dafce2e88c75d8f44701d8fba0d4 --- core/java/com/android/internal/os/BatteryStatsImpl.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index c71c131146a1f..e2ccaae1e87ff 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -8160,7 +8160,7 @@ public final class BatteryStatsImpl extends BatteryStats { final int size = delta.size(); for (int i = 0; i < size; i++) { final NetworkStats.Entry entry = delta.getValues(i, mTmpNetworkStatsEntry); - if (entry.rxPackets == 0 || entry.txPackets == 0) { + if (entry.rxPackets == 0 && entry.txPackets == 0) { continue; } @@ -8211,13 +8211,13 @@ public final class BatteryStatsImpl extends BatteryStats { if (activityInfo != null) { ControllerActivityCounterImpl activityCounter = u.getOrCreateModemControllerActivityLocked(); - if (entry.rxPackets != 0) { + if (totalRxPackets > 0 && entry.rxPackets > 0) { final long rxMs = (entry.rxPackets * activityInfo.getRxTimeMillis()) / totalRxPackets; activityCounter.getRxTimeCounter().addCountLocked(rxMs); } - if (entry.txPackets != 0) { + if (totalTxPackets > 0 && entry.txPackets > 0) { for (int lvl = 0; lvl < ModemActivityInfo.TX_POWER_LEVELS; lvl++) { long txMs = entry.txPackets * activityInfo.getTxTimeMillis()[lvl]; txMs /= totalTxPackets;