Fix potential NPE in ModuleFileFunction
`SkyframeLookupResult#get` can return `null` even if `env.valuesMissing()` is `false`.
Closes #22152.
PiperOrigin-RevId: 629099024
Change-Id: I54e675ce7bdf012d966308fb60d99e9b04e2d75f
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunction.java b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunction.java
index 2d25525..542a62e 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/bzlmod/ModuleFileFunction.java
@@ -596,11 +596,14 @@
if (env.valuesMissing()) {
return null;
}
- List<Registry> registryObjects =
- registryKeys.stream()
- .map(registryResult::get)
- .map(Registry.class::cast)
- .collect(toImmutableList());
+ List<Registry> registryObjects = new ArrayList<>(registryKeys.size());
+ for (RegistryKey registryKey : registryKeys) {
+ Registry registry = (Registry) registryResult.get(registryKey);
+ if (registry == null) {
+ return null;
+ }
+ registryObjects.add(registry);
+ }
// Now go through the list of registries and use the first one that contains the requested
// module.