aboutsummaryrefslogtreecommitdiff
path: root/service/src/com/android/car/hal/UserHalHelper.java
diff options
context:
space:
mode:
Diffstat (limited to 'service/src/com/android/car/hal/UserHalHelper.java')
-rw-r--r--service/src/com/android/car/hal/UserHalHelper.java29
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);