summaryrefslogtreecommitdiff
path: root/src/buildtool/execution_api/remote/bazel
diff options
context:
space:
mode:
Diffstat (limited to 'src/buildtool/execution_api/remote/bazel')
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_api.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
index 6aa8b938..d523fbed 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_api.cpp
@@ -604,17 +604,20 @@ auto BazelApi::CreateAction(
-> std::vector<ArtifactDigest> {
std::vector<bazel_re::Digest> bazel_digests;
bazel_digests.reserve(digests.size());
- std::unordered_map<bazel_re::Digest, ArtifactDigest> digest_map;
+ std::unordered_map<bazel_re::Digest, ArtifactDigest const*> digest_map;
for (auto const& digest : digests) {
auto const& bazel_digest =
bazel_digests.emplace_back(ArtifactDigestFactory::ToBazel(digest));
- digest_map[bazel_digest] = digest;
+ digest_map.insert_or_assign(bazel_digest, &digest);
}
- auto bazel_result = network_->IsAvailable(bazel_digests);
+ auto const bazel_result = network_->IsAvailable(bazel_digests);
std::vector<ArtifactDigest> result;
result.reserve(bazel_result.size());
for (auto const& bazel_digest : bazel_result) {
- result.push_back(digest_map[bazel_digest]);
+ auto it = digest_map.find(bazel_digest);
+ if (it != digest_map.end()) {
+ result.push_back(*it->second);
+ }
}
return result;
}