summaryrefslogtreecommitdiffstats
path: root/core/java/com
diff options
context:
space:
mode:
authorAmith Yamasani <yamasani@google.com>2009-09-30 11:05:30 -0700
committerAmith Yamasani <yamasani@google.com>2009-09-30 11:08:31 -0700
commit53b707ba26055f3b7597db5826dee64987bfb83a (patch)
treebbd6e2da35784c8a37a22d09b3235a87479ec58b /core/java/com
parent8eb0f348931c9185ae6a8f49964c904c42b2bb57 (diff)
downloadframeworks_base-53b707ba26055f3b7597db5826dee64987bfb83a.zip
frameworks_base-53b707ba26055f3b7597db5826dee64987bfb83a.tar.gz
frameworks_base-53b707ba26055f3b7597db5826dee64987bfb83a.tar.bz2
Handle bad lines in /proc/wakelocks : Fix for 2124260
Use the return value from the native parser to skip over bad lines. When the wakelocks overflow, there could be empty or badly formatted lines. Skip over them.
Diffstat (limited to 'core/java/com')
-rw-r--r--core/java/com/android/internal/os/BatteryStatsImpl.java8
1 files changed, 4 insertions, 4 deletions
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 35c66ba..7a8a3be 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -867,15 +867,15 @@ public final class BatteryStatsImpl extends BatteryStats {
String[] nameStringArray = mProcWakelocksName;
long[] wlData = mProcWakelocksData;
- Process.parseProcLine(wlBuffer, startIndex, endIndex, PROC_WAKELOCKS_FORMAT,
- nameStringArray, wlData, null);
+ boolean parsed = Process.parseProcLine(wlBuffer, startIndex, endIndex,
+ PROC_WAKELOCKS_FORMAT, nameStringArray, wlData, null);
name = nameStringArray[0];
count = (int) wlData[1];
// convert nanoseconds to microseconds with rounding.
totalTime = (wlData[2] + 500) / 1000;
- if (name.length() > 0) {
+ if (parsed && name.length() > 0) {
if (!m.containsKey(name)) {
m.put(name, new KernelWakelockStats(count, totalTime,
sKernelWakelockUpdateVersion));
@@ -892,7 +892,7 @@ public final class BatteryStatsImpl extends BatteryStats {
numUpdatedWlNames++;
}
}
- }
+ }
startIndex = endIndex;
}