Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54d42be6 authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Avoid NPE when no staged installs.

listFiles() returns null instead of empty list; deal with it.

Bug: 22608671
Change-Id: I60dabec31932af3cded915c6927a4c5e5c71775d
parent 33c619bb
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -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;