incfs: tolerate either ptrdiff_t or size_t for std::span
The out-of-date std::span in external/libcxx currently uses ptrdiff_t as the type of size() and the second ctor argument. The C++20 std::span actually uses size_t for these values instead. Try to accommodate both versions of std::span until libc++ is upgraded. Bug: http://b/175635923 Test: treehugger Change-Id: Idc43f880b6eb21dad79e79fa456847d5865a1ed2
This commit is contained in:
@@ -216,7 +216,10 @@ static std::span<const uint8_t> toSpan(const ::std::optional<::std::vector<uint8
|
||||
if (!content) {
|
||||
return {};
|
||||
}
|
||||
return {content->data(), (int)content->size()};
|
||||
// TODO(b/175635923): Replace with {content->data(), content->size()} after libc++ is upgraded.
|
||||
// The type of the second std::span ctor param changed from ptrdiff_t to size_t between the old
|
||||
// libc++ and the finalized C++20.
|
||||
return std::span<const uint8_t>(content->data(), content->size());
|
||||
}
|
||||
|
||||
binder::Status BinderIncrementalService::makeFile(
|
||||
|
||||
@@ -1166,11 +1166,11 @@ int IncrementalService::makeFile(StorageId storage, std::string_view path, int m
|
||||
if (!ifs) {
|
||||
return -EINVAL;
|
||||
}
|
||||
if (data.size() > params.size) {
|
||||
if ((IncFsSize)data.size() > params.size) {
|
||||
LOG(ERROR) << "Bad data size - bigger than file size";
|
||||
return -EINVAL;
|
||||
}
|
||||
if (!data.empty() && data.size() != params.size) {
|
||||
if (!data.empty() && (IncFsSize)data.size() != params.size) {
|
||||
// Writing a page is an irreversible operation, and it can't be updated with additional
|
||||
// data later. Check that the last written page is complete, or we may break the file.
|
||||
if (!isPageAligned(data.size())) {
|
||||
@@ -3188,7 +3188,7 @@ binder::Status IncrementalService::IncrementalServiceConnector::setStorageParams
|
||||
}
|
||||
|
||||
FileId IncrementalService::idFromMetadata(std::span<const uint8_t> metadata) {
|
||||
return IncFs_FileIdFromMetadata({(const char*)metadata.data(), metadata.size()});
|
||||
return IncFs_FileIdFromMetadata({(const char*)metadata.data(), (IncFsSize)metadata.size()});
|
||||
}
|
||||
|
||||
} // namespace android::incremental
|
||||
|
||||
Reference in New Issue
Block a user