diff options
| -rw-r--r-- | services/core/java/com/android/server/AppOpsService.java | 5 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/UserManagerService.java | 12 |
2 files changed, 14 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/AppOpsService.java b/services/core/java/com/android/server/AppOpsService.java index be20616..bfa0402 100644 --- a/services/core/java/com/android/server/AppOpsService.java +++ b/services/core/java/com/android/server/AppOpsService.java @@ -1253,7 +1253,10 @@ public class AppOpsService extends IAppOpsService.Stub { public void removeUser(int userHandle) throws RemoteException { checkSystemUid("removeUser"); mOpRestrictions.remove(userHandle); - mProfileOwnerUids.removeAt(mProfileOwnerUids.indexOfKey(userHandle)); + final int index = mProfileOwnerUids.indexOfKey(userHandle); + if (index >= 0) { + mProfileOwnerUids.removeAt(index); + } } private void checkSystemUid(String function) { diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java index 131d05b..fd180bf 100644 --- a/services/core/java/com/android/server/pm/UserManagerService.java +++ b/services/core/java/com/android/server/pm/UserManagerService.java @@ -511,8 +511,16 @@ public class UserManagerService extends IUserManager.Stub { * Check if we've hit the limit of how many users can be created. */ private boolean isUserLimitReachedLocked() { - int nUsers = mUsers.size(); - return nUsers >= UserManager.getMaxSupportedUsers(); + int aliveUserCount = 0; + final int totalUserCount = mUsers.size(); + // Skip over users being removed + for (int i = 0; i < totalUserCount; i++) { + UserInfo user = mUsers.valueAt(i); + if (!mRemovingUserIds.get(user.id)) { + aliveUserCount++; + } + } + return aliveUserCount >= UserManager.getMaxSupportedUsers(); } /** |
