OSDN Git Service

Use toArray(T[]) instead of toArray().
authorGarfield Tan <xutan@google.com>
Sat, 13 Oct 2018 00:45:50 +0000 (17:45 -0700)
committerChenbo Feng <fengc@google.com>
Wed, 20 Feb 2019 22:06:30 +0000 (14:06 -0800)
toArray() always creates Object array, which can't be cast to array type
of specific types.

Bug: None
Test: Package can be installed and uninstalled correctly with a package
list.

Change-Id: I9d6c8c2b1c3de767b87643f4c3aaff1044e33fbc
Merged-In: I9d6c8c2b1c3de767b87643f4c3aaff1044e33fbc

services/core/java/com/android/server/pm/PackageManagerService.java

index 8948977..6b752f9 100644 (file)
@@ -13696,7 +13696,9 @@ public class PackageManagerService extends IPackageManager.Stub
             if (mPackageListObservers.size() == 0) {
                 return;
             }
-            observers = (PackageListObserver[]) mPackageListObservers.toArray();
+            final PackageListObserver[] observerArray =
+                    new PackageListObserver[mPackageListObservers.size()];
+            observers = mPackageListObservers.toArray(observerArray);
         }
         for (int i = observers.length - 1; i >= 0; --i) {
             observers[i].onPackageAdded(packageName);
@@ -13710,7 +13712,9 @@ public class PackageManagerService extends IPackageManager.Stub
             if (mPackageListObservers.size() == 0) {
                 return;
             }
-            observers = (PackageListObserver[]) mPackageListObservers.toArray();
+            final PackageListObserver[] observerArray =
+                    new PackageListObserver[mPackageListObservers.size()];
+            observers = mPackageListObservers.toArray(observerArray);
         }
         for (int i = observers.length - 1; i >= 0; --i) {
             observers[i].onPackageRemoved(packageName);