summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Nicolas Geoffray <ngeoffray@google.com> 2018-11-16 04:59:55 -0800
committer android-build-merger <android-build-merger@google.com> 2018-11-16 04:59:55 -0800
commit4a4aba19b35c1a63e4a02de41f4cd75dbce389f6 (patch)
tree7107839e6e9455a1195435fa1144456309042060
parentec901b3133918a2afeb35a37dbf5df530afcda95 (diff)
parent0407b12c00d749a6877bd7c809a9e080b190c8c9 (diff)
Merge "Check for null in applyDefiningSharedLibraryUpdateLocked." am: 801862313f
am: 0407b12c00 Change-Id: I9d0c691886a0726fa37d7ffc2e07cb00b6f8310e
-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 a3ca97be73c0..d48e728c5b55 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);
+ }
}
}
}