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

Commit 93d703a4 authored by Paul Duffin's avatar Paul Duffin Committed by Android (Google) Code Review
Browse files

Merge "Preserve order of shared library files"

parents 6b2fa023 ee405a2c
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -344,6 +344,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -9732,7 +9733,8 @@ public class PackageManagerService extends IPackageManager.Stub
        }
    }
    private void addSharedLibraryLPr(ArraySet<String> usesLibraryFiles, SharedLibraryEntry file,
    private void addSharedLibraryLPr(Set<String> usesLibraryFiles,
            SharedLibraryEntry file,
            PackageParser.Package changingLib) {
        if (file.path != null) {
            usesLibraryFiles.add(file.path);
@@ -9761,7 +9763,10 @@ public class PackageManagerService extends IPackageManager.Stub
        if (pkg == null) {
            return;
        }
        ArraySet<String> usesLibraryFiles = null;
        // The collection used here must maintain the order of addition (so
        // that libraries are searched in the correct order) and must have no
        // duplicates.
        Set<String> usesLibraryFiles = null;
        if (pkg.usesLibraries != null) {
            usesLibraryFiles = addSharedLibrariesLPw(pkg.usesLibraries,
                    null, null, pkg.packageName, changingLib, true,
@@ -9785,10 +9790,10 @@ public class PackageManagerService extends IPackageManager.Stub
        }
    }
    private ArraySet<String> addSharedLibrariesLPw(@NonNull List<String> requestedLibraries,
    private Set<String> addSharedLibrariesLPw(@NonNull List<String> requestedLibraries,
            @Nullable int[] requiredVersions, @Nullable String[][] requiredCertDigests,
            @NonNull String packageName, @Nullable PackageParser.Package changingLib,
            boolean required, int targetSdk, @Nullable ArraySet<String> outUsedLibraries)
            boolean required, int targetSdk, @Nullable Set<String> outUsedLibraries)
            throws PackageManagerException {
        final int libCount = requestedLibraries.size();
        for (int i = 0; i < libCount; i++) {
@@ -9854,7 +9859,9 @@ public class PackageManagerService extends IPackageManager.Stub
                }
                if (outUsedLibraries == null) {
                    outUsedLibraries = new ArraySet<>();
                    // Use LinkedHashSet to preserve the order of files added to
                    // usesLibraryFiles while eliminating duplicates.
                    outUsedLibraries = new LinkedHashSet<>();
                }
                addSharedLibraryLPr(outUsedLibraries, libEntry, changingLib);
            }