summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nicolas Geoffray <ngeoffray@google.com> 2018-11-16 04:46:27 -0800
committer android-build-merger <android-build-merger@google.com> 2018-11-16 04:46:27 -0800
commit0407b12c00d749a6877bd7c809a9e080b190c8c9 (patch)
treed7216cb77f1afb88d59671b646f7231ea24c603e
parenta835f23f470a3d3539892e6d08286aa1de170f94 (diff)
parent801862313f1629d04074aff6c5ba56bf2d52bdc7 (diff)
Merge "Check for null in applyDefiningSharedLibraryUpdateLocked."
am: 801862313f Change-Id: I5beab35e1d6fda02895e9479015f4ea2276be5c1
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java16
1 files changed, 13 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index bdb2f4cbefd8..2a605f555bdf 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -9483,7 +9483,7 @@ public class PackageManagerService extends IPackageManager.Stub
}
}
- private SharedLibraryInfo getSharedLibraryInfoLPr(String name, long version) {
+ private @Nullable SharedLibraryInfo getSharedLibraryInfoLPr(String name, long version) {
LongSparseArray<SharedLibraryInfo> versionedLib = mSharedLibraries.get(name);
if (versionedLib == null) {
return null;
@@ -9728,16 +9728,26 @@ public class PackageManagerService extends IPackageManager.Stub
private void applyDefiningSharedLibraryUpdateLocked(
PackageParser.Package pkg, SharedLibraryInfo libInfo,
BiConsumer<SharedLibraryInfo, SharedLibraryInfo> action) {
+ // Note that libraries defined by this package may be null if:
+ // - Package manager was unable to create the shared library. The package still
+ // gets installed, but the shared library does not get created.
+ // Or:
+ // - Package manager is in a state where package isn't scanned yet. This will
+ // get called again after scanning to fix the dependencies.
if (pkg.isLibrary()) {
if (pkg.staticSharedLibName != null) {
SharedLibraryInfo definedLibrary = getSharedLibraryInfoLPr(
pkg.staticSharedLibName, pkg.staticSharedLibVersion);
- action.accept(definedLibrary, libInfo);
+ if (definedLibrary != null) {
+ action.accept(definedLibrary, libInfo);
+ }
} else {
for (String libraryName : pkg.libraryNames) {
SharedLibraryInfo definedLibrary = getSharedLibraryInfoLPr(
libraryName, SharedLibraryInfo.VERSION_UNDEFINED);
- action.accept(definedLibrary, libInfo);
+ if (definedLibrary != null) {
+ action.accept(definedLibrary, libInfo);
+ }
}
}
}