summaryrefslogtreecommitdiff
path: root/core/java
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2017-10-03 23:04:57 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2017-10-03 23:04:57 +0000
commitbac998a0cb4e8c19350129d2541bbb33cbd7d7f4 (patch)
tree929e7fb2eb4d3c8d85d24738c495900e32a59b2d /core/java
parenta4fabd3ef26eada64f6bca2909342fb374b888b0 (diff)
parent8d475ca0586ca7315d0660be429d5eebe114303b (diff)
Merge "Prevent WakeLock count ending up in an incorrect state"
Diffstat (limited to 'core/java')
-rw-r--r--core/java/android/os/PowerManager.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java
index 3726f47093b9..7f4dee6ef2da 100644
--- a/core/java/android/os/PowerManager.java
+++ b/core/java/android/os/PowerManager.java
@@ -1412,7 +1412,11 @@ public final class PowerManager {
*/
public void release(int flags) {
synchronized (mToken) {
- mInternalCount--;
+ if (mInternalCount > 0) {
+ // internal count must only be decreased if it is > 0 or state of
+ // the WakeLock object is broken.
+ mInternalCount--;
+ }
if ((flags & RELEASE_FLAG_TIMEOUT) == 0) {
mExternalCount--;
}