diff options
author | 2022-07-13 22:25:36 +0000 | |
---|---|---|
committer | 2022-07-13 22:25:36 +0000 | |
commit | d1a6cd9185338f1237db35d5a02b3b82facfe47e (patch) | |
tree | 52d01ec20a5aa7b2eb5f92dcadfc49316f88853f | |
parent | 1622d409d9cf672ea8b81b8037142dafc66f8ce5 (diff) | |
parent | 11a19e4c715cb6a7fbbfd001a59a743c6e18384c (diff) |
Merge "Fix weak global reference overflow"
-rw-r--r-- | services/core/java/com/android/server/pm/permission/PermissionManagerService.java | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 290f4aea498e..336c27d98ee1 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -5689,16 +5689,21 @@ public class PermissionManagerService extends IPermissionManager.Stub { appOpsManager.finishProxyOp(AppOpsManager.opToPublicName(op), resolvedAttributionSource, skipCurrentFinish); } - - if (next == null || next.getNext() == null) { - return; - } - RegisteredAttribution registered = sRunningAttributionSources.remove(current.getToken()); if (registered != null) { registered.unregister(); } + + if (next == null || next.getNext() == null) { + if (next != null) { + registered = sRunningAttributionSources.remove(next.getToken()); + if (registered != null) { + registered.unregister(); + } + } + return; + } current = next; } } |