diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index e3210499b9812..fe492c73519fd 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -4764,10 +4764,8 @@ public class PackageManagerService extends IPackageManager.Stub { final SharedUserSetting sus = (SharedUserSetting) obj; final int N = sus.packages.size(); final String[] res = new String[N]; - final Iterator it = sus.packages.iterator(); - int i = 0; - while (it.hasNext()) { - res[i++] = it.next().name; + for (int i = 0; i < N; i++) { + res[i] = sus.packages.valueAt(i).name; } return res; } else if (obj instanceof PackageSetting) { @@ -14485,7 +14483,9 @@ public class PackageManagerService extends IPackageManager.Stub { // Remove existing system package removePackageLI(deletedPackage, true); - disabledSystem = disableSystemPackageLPw(deletedPackage, pkg); + synchronized (mPackages) { + disabledSystem = disableSystemPackageLPw(deletedPackage, pkg); + } if (!disabledSystem) { // We didn't need to disable the .apk as a current system package, // which means we are replacing another update that is already