diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java index 026c0070b95ed..d6846bed2a144 100644 --- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java @@ -667,9 +667,11 @@ class MediaRouter2ServiceImpl { "userId: %d", newActiveUserId)); mCurrentActiveUserId = newActiveUserId; - for (int i = 0; i < mUserRecords.size(); i++) { - int userId = mUserRecords.keyAt(i); - UserRecord userRecord = mUserRecords.valueAt(i); + // disposeUserIfNeededLocked might modify the collection, hence clone + final var userRecords = mUserRecords.clone(); + for (int i = 0; i < userRecords.size(); i++) { + int userId = userRecords.keyAt(i); + UserRecord userRecord = userRecords.valueAt(i); if (isUserActiveLocked(userId)) { // userId corresponds to the active user, or one of its profiles. We // ensure the associated structures are initialized. diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java index add11351aff0d..beab5ea5bcb05 100644 --- a/services/core/java/com/android/server/media/MediaRouterService.java +++ b/services/core/java/com/android/server/media/MediaRouterService.java @@ -638,9 +638,11 @@ public final class MediaRouterService extends IMediaRouterService.Stub synchronized (mLock) { if (mCurrentActiveUserId != newActiveUserId) { mCurrentActiveUserId = newActiveUserId; - for (int i = 0; i < mUserRecords.size(); i++) { - int userId = mUserRecords.keyAt(i); - UserRecord userRecord = mUserRecords.valueAt(i); + // disposeUserIfNeededLocked might modify the collection, hence clone + final var userRecords = mUserRecords.clone(); + for (int i = 0; i < userRecords.size(); i++) { + int userId = userRecords.keyAt(i); + UserRecord userRecord = userRecords.valueAt(i); if (isUserActiveLocked(userId)) { // userId corresponds to the active user, or one of its profiles. We // ensure the associated structures are initialized.