From b4fab3c2d5ff2426489d42ad07f302f90587cc28 Mon Sep 17 00:00:00 2001 From: Dan Engelbrecht Date: Fri, 25 Mar 2022 13:17:13 +0100 Subject: cleanup --- zenstore/basicfile.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) (limited to 'zenstore/basicfile.cpp') diff --git a/zenstore/basicfile.cpp b/zenstore/basicfile.cpp index 44a7fc77f..0d410c745 100644 --- a/zenstore/basicfile.cpp +++ b/zenstore/basicfile.cpp @@ -142,33 +142,27 @@ BasicFile::Close() void BasicFile::Read(void* Data, uint64_t BytesToRead, uint64_t FileOffset) { - const uint64_t MaxChunkSize = 2u * 1024 * 1024 * 1024; - uint64_t TotalFileSize = FileSize(); - ZEN_ASSERT((FileOffset + BytesToRead) <= TotalFileSize); + const uint64_t MaxChunkSize = 2u * 1024 * 1024 * 1024; while (BytesToRead) { const uint64_t NumberOfBytesToRead = Min(BytesToRead, MaxChunkSize); - uint64_t NumberOfBytesRead; #if ZEN_PLATFORM_WINDOWS OVERLAPPED Ovl{}; Ovl.Offset = DWORD(FileOffset & 0xffff'ffffu); Ovl.OffsetHigh = DWORD(FileOffset >> 32); - ZEN_ASSERT((FileOffset + NumberOfBytesToRead) <= TotalFileSize); DWORD dwNumberOfBytesRead = 0; BOOL Success = ::ReadFile(m_FileHandle, Data, DWORD(NumberOfBytesToRead), &dwNumberOfBytesRead, &Ovl); - ZEN_ASSERT((dwNumberOfBytesRead <= NumberOfBytesToRead) && (dwNumberOfBytesRead > 0)); - NumberOfBytesRead = dwNumberOfBytesRead; + ZEN_ASSERT(dwNumberOfBytesRead == NumberOfBytesToRead); #else static_assert(sizeof(off_t) >= sizeof(uint64_t), "sizeof(off_t) does not support large files"); - int Fd = int(uintptr_t(m_FileHandle)); - int BytesRead = pread(Fd, Data, NumberOfBytesToRead, FileOffset); - bool Success = (BytesRead > 0); - NumberOfBytesRead = static_cast(BytesRead); + int Fd = int(uintptr_t(m_FileHandle)); + int BytesRead = pread(Fd, Data, NumberOfBytesToRead, FileOffset); + bool Success = (BytesRead > 0); #endif if (!Success) @@ -176,9 +170,9 @@ BasicFile::Read(void* Data, uint64_t BytesToRead, uint64_t FileOffset) ThrowLastError(fmt::format("Failed to read from file '{}'", zen::PathFromHandle(m_FileHandle))); } - BytesToRead -= NumberOfBytesRead; - FileOffset += NumberOfBytesRead; - Data = reinterpret_cast(Data) + NumberOfBytesRead; + BytesToRead -= NumberOfBytesToRead; + FileOffset += NumberOfBytesToRead; + Data = reinterpret_cast(Data) + NumberOfBytesToRead; } } @@ -366,6 +360,14 @@ BasicFile::MarkAsDeleteOnClose(std::error_code& Ec) #endif } +void* +BasicFile::Detach() +{ + void* FileHandle = m_FileHandle; + m_FileHandle = 0; + return FileHandle; +} + ////////////////////////////////////////////////////////////////////////// TemporaryFile::~TemporaryFile() -- cgit v1.2.3