Merge "Support zero-length mapped files" am: 2009e32008 am: 747e647bd3

am: 4c88d1aec3

Change-Id: I2f19669b7f6d7224497c7c44857b8ed9b2d4e13f
This commit is contained in:
Pirama Arumuga Nainar 2019-03-11 17:17:04 -07:00 committed by android-build-merger
commit c3320e9e46
1 changed files with 8 additions and 1 deletions

View File

@ -41,7 +41,14 @@ std::unique_ptr<MappedFile> MappedFile::FromFd(int fd, off64_t offset, size_t le
HANDLE handle =
CreateFileMapping(reinterpret_cast<HANDLE>(_get_osfhandle(fd)), nullptr,
(prot & PROT_WRITE) ? PAGE_READWRITE : PAGE_READONLY, 0, 0, nullptr);
if (handle == nullptr) return nullptr;
if (handle == nullptr) {
// http://b/119818070 "app crashes when reading asset of zero length".
// Return a MappedFile that's only valid for reading the size.
if (length == 0) {
return std::unique_ptr<MappedFile>(new MappedFile{nullptr, 0, 0, nullptr});
}
return nullptr;
}
void* base = MapViewOfFile(handle, (prot & PROT_WRITE) ? FILE_MAP_ALL_ACCESS : FILE_MAP_READ, 0,
file_offset, file_length);
if (base == nullptr) {