diff options
author | 2015-07-20 16:36:55 -0700 | |
---|---|---|
committer | 2015-07-20 16:37:54 -0700 | |
commit | 54d42be6eb149b3e43115e810e4a1b92e9865d05 (patch) | |
tree | f21108713cec8913e0a06aa37ede16ca380efc88 | |
parent | 33c619bb52c9e3e62b7243c9b1d9a75189885427 (diff) |
Avoid NPE when no staged installs.
listFiles() returns null instead of empty list; deal with it.
Bug: 22608671
Change-Id: I60dabec31932af3cded915c6927a4c5e5c71775d
-rw-r--r-- | services/core/java/com/android/server/pm/PackageInstallerService.java | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index 07de6f546ee4..0366fff4eee9 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -91,7 +91,6 @@ import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.ImageUtils; import com.android.internal.util.IndentingPrintWriter; import com.android.server.IoThread; -import com.google.android.collect.Sets; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -106,6 +105,7 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.Random; @@ -221,7 +221,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub { reconcileStagesLocked(StorageManager.UUID_PRIVATE_INTERNAL); - final ArraySet<File> unclaimedIcons = Sets.newArraySet( + final ArraySet<File> unclaimedIcons = newArraySet( mSessionsDir.listFiles()); // Ignore stages and icons claimed by active sessions @@ -245,7 +245,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub { private void reconcileStagesLocked(String volumeUuid) { final File stagingDir = buildStagingDir(volumeUuid); - final ArraySet<File> unclaimedStages = Sets.newArraySet( + final ArraySet<File> unclaimedStages = newArraySet( stagingDir.listFiles(sStageFilter)); // Ignore stages claimed by active sessions @@ -1091,6 +1091,15 @@ public class PackageInstallerService extends IPackageInstaller.Stub { .build(); } + public static <E> ArraySet<E> newArraySet(E... elements) { + final ArraySet<E> set = new ArraySet<E>(); + if (elements != null) { + set.ensureCapacity(elements.length); + Collections.addAll(set, elements); + } + return set; + } + private static class Callbacks extends Handler { private static final int MSG_SESSION_CREATED = 1; private static final int MSG_SESSION_BADGING_CHANGED = 2; |