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

Commit 596bb647 authored by Paul Duffin's avatar Paul Duffin Committed by Gerrit Code Review
Browse files

Merge "Preserve order of shared library files"

parents 35dc0200 14062f23
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -325,6 +325,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;
@@ -9846,7 +9847,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);
@@ -9875,7 +9877,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, null);
@@ -9896,10 +9901,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, @Nullable ArraySet<String> outUsedLibraries)
            boolean required, @Nullable Set<String> outUsedLibraries)
            throws PackageManagerException {
        final int libCount = requestedLibraries.size();
        for (int i = 0; i < libCount; i++) {
@@ -9944,7 +9949,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);
            }