diff options
author | Adam Lesinski <adamlesinski@google.com> | 2015-09-22 18:33:14 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-09-22 18:33:14 +0000 |
commit | 1b57758a1bb814c3a00ec864fe164bfe7861a9ab (patch) | |
tree | bf270e7cd6f1e8dc6d1b2fb9e2ebf2c5fade01a5 /core | |
parent | b49245f96233b7f89fb5d4ba52576131ca6fb47a (diff) | |
parent | 52290c9c4fca5bec384382406dd1b4d28b424a89 (diff) | |
download | frameworks_base-1b57758a1bb814c3a00ec864fe164bfe7861a9ab.zip frameworks_base-1b57758a1bb814c3a00ec864fe164bfe7861a9ab.tar.gz frameworks_base-1b57758a1bb814c3a00ec864fe164bfe7861a9ab.tar.bz2 |
Merge "Fix Array Index Out of Bounds in BatteryStatsImpl" into mnc-dr-dev
Diffstat (limited to 'core')
-rw-r--r-- | core/java/com/android/internal/os/BatteryStatsImpl.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index 6ccdd08..e39bf60 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -8044,6 +8044,10 @@ public final class BatteryStatsImpl extends BatteryStats { * wakelocks. If the screen is on, we just assign the actual cpu time an app used. */ public void updateCpuTimeLocked() { + if (mPowerProfile == null) { + return; + } + if (DEBUG_ENERGY_CPU) { Slog.d(TAG, "!Cpu updating!"); } @@ -8131,14 +8135,19 @@ public final class BatteryStatsImpl extends BatteryStats { // Add the cpu speeds to this UID. These are used as a ratio // for computing the power this UID used. - if (u.mCpuClusterSpeed == null) { - u.mCpuClusterSpeed = new LongSamplingCounter[clusterSpeeds.length][]; + final int numClusters = mPowerProfile.getNumCpuClusters(); + if (u.mCpuClusterSpeed == null || u.mCpuClusterSpeed.length != + numClusters) { + u.mCpuClusterSpeed = new LongSamplingCounter[numClusters][]; } for (int cluster = 0; cluster < clusterSpeeds.length; cluster++) { - if (u.mCpuClusterSpeed[cluster] == null) { + final int speedsInCluster = mPowerProfile.getNumSpeedStepsInCpuCluster( + cluster); + if (u.mCpuClusterSpeed[cluster] == null || speedsInCluster != + u.mCpuClusterSpeed[cluster].length) { u.mCpuClusterSpeed[cluster] = - new LongSamplingCounter[clusterSpeeds[cluster].length]; + new LongSamplingCounter[speedsInCluster]; } final LongSamplingCounter[] cpuSpeeds = u.mCpuClusterSpeed[cluster]; |