Merge "Support zero-length mapped files"
This commit is contained in:
commit
2009e32008
|
@ -41,7 +41,14 @@ std::unique_ptr<MappedFile> MappedFile::FromFd(int fd, off64_t offset, size_t le
|
||||||
HANDLE handle =
|
HANDLE handle =
|
||||||
CreateFileMapping(reinterpret_cast<HANDLE>(_get_osfhandle(fd)), nullptr,
|
CreateFileMapping(reinterpret_cast<HANDLE>(_get_osfhandle(fd)), nullptr,
|
||||||
(prot & PROT_WRITE) ? PAGE_READWRITE : PAGE_READONLY, 0, 0, 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,
|
void* base = MapViewOfFile(handle, (prot & PROT_WRITE) ? FILE_MAP_ALL_ACCESS : FILE_MAP_READ, 0,
|
||||||
file_offset, file_length);
|
file_offset, file_length);
|
||||||
if (base == nullptr) {
|
if (base == nullptr) {
|
||||||
|
|
Loading…
Reference in New Issue