Merge "Fixes collection modified while iterating by cloning the collection."

This commit is contained in:
Yasin Kilicdere
2022-11-28 16:26:53 +00:00
committed by Android (Google) Code Review
2 changed files with 10 additions and 6 deletions

View File

@@ -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.

View File

@@ -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.