diff options
-rw-r--r-- | src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp index 3cd9d4a8..ed9a00a5 100644 --- a/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp +++ b/src/buildtool/execution_api/remote/bazel/bazel_cas_client.cpp @@ -62,15 +62,20 @@ template <typename TRequest, std::nullopt) -> TIterator { std::size_t content_size = 0; for (auto it = begin; it != end; ++it) { - auto to_merge = std::invoke(request_creator, *it); - if (request->ByteSizeLong() + to_merge.ByteSizeLong() > message_limit) { + std::optional<TRequest> to_merge = std::invoke(request_creator, *it); + if (not to_merge.has_value()) { + return it; + } + + if (request->ByteSizeLong() + to_merge->ByteSizeLong() > + message_limit) { return it; } if (content_limit.has_value() and content_size + GetContentSize(*it) > *content_limit) { return it; } - request->MergeFrom(to_merge); + request->MergeFrom(*std::move(to_merge)); content_size += GetContentSize(*it); } return end; |