diff options
Diffstat (limited to 'service/src/com/android/car/hal/UserHalHelper.java')
-rw-r--r-- | service/src/com/android/car/hal/UserHalHelper.java | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/service/src/com/android/car/hal/UserHalHelper.java b/service/src/com/android/car/hal/UserHalHelper.java index 06185ba6a4..7c6f13e72e 100644 --- a/service/src/com/android/car/hal/UserHalHelper.java +++ b/service/src/com/android/car/hal/UserHalHelper.java @@ -594,21 +594,26 @@ public final class UserHalHelper { UsersInfo usersInfo = emptyUsersInfo(); usersInfo.currentUser.userId = userId; UserHandle currentUser = null; - usersInfo.numberUsers = users.size(); - - ArrayList<UserInfo> halUsers = new ArrayList<>(); - for (int i = 0; i < usersInfo.numberUsers; i++) { + int allUsersSize = users.size(); + ArrayList<UserInfo> halUsers = new ArrayList<>(allUsersSize); + for (int i = 0; i < allUsersSize; i++) { UserHandle user = users.get(i); - if (user.getIdentifier() == usersInfo.currentUser.userId) { - currentUser = user; + try { + if (user.getIdentifier() == usersInfo.currentUser.userId) { + currentUser = user; + } + UserInfo halUser = new UserInfo(); + halUser.userId = user.getIdentifier(); + halUser.flags = convertFlags(userHandleHelper, user); + halUsers.add(halUser); + } catch (Exception e) { + // Most likely the user was removed + Log.w(TAG, "newUsersInfo(): ignoring user " + user + " due to exception", e); } - UserInfo halUser = new UserInfo(); - halUser.userId = user.getIdentifier(); - halUser.flags = convertFlags(userHandleHelper, user); - halUsers.add(halUser); } - - usersInfo.existingUsers = halUsers.toArray(new UserInfo[halUsers.size()]); + int existingUsersSize = halUsers.size(); + usersInfo.numberUsers = existingUsersSize; + usersInfo.existingUsers = halUsers.toArray(new UserInfo[existingUsersSize]); if (currentUser != null) { usersInfo.currentUser.flags = convertFlags(userHandleHelper, currentUser); |