diff options
Diffstat (limited to 'src/zenserver/vfs/vfsimpl.cpp')
| -rw-r--r-- | src/zenserver/vfs/vfsimpl.cpp | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/zenserver/vfs/vfsimpl.cpp b/src/zenserver/vfs/vfsimpl.cpp index f528b2620..5ef89ee77 100644 --- a/src/zenserver/vfs/vfsimpl.cpp +++ b/src/zenserver/vfs/vfsimpl.cpp @@ -38,21 +38,23 @@ VfsOplogDataSource::ReadNamedData(std::string_view Path, void* Buffer, uint64_t void VfsOplogDataSource::ReadChunkData(const Oid& ChunkId, void* Buffer, uint64_t ByteOffset, uint64_t ByteCount) { - IoBuffer ChunkBuffer; - auto Result = - m_ProjectStore->GetChunkRange(m_ProjectId, m_OplogId, ChunkId, 0, ~0ull, ZenContentType::kCompressedBinary, /* out */ ChunkBuffer); + CompositeBuffer ChunkBuffer; + ZenContentType ContentType; + auto Result = m_ProjectStore->GetChunkRange(m_ProjectId, + m_OplogId, + ChunkId, + 0, + ~0ull, + ZenContentType::kCompressedBinary, + /* out */ ChunkBuffer, + /* out */ ContentType); if (Result.first == HttpResponseCode::OK) { - const uint8_t* SourceBuffer = reinterpret_cast<const uint8_t*>(ChunkBuffer.GetData()); - uint64_t AvailableBufferBytes = ChunkBuffer.GetSize(); - - ZEN_ASSERT(AvailableBufferBytes >= ByteOffset); - AvailableBufferBytes -= ByteOffset; - SourceBuffer += ByteOffset; - - ZEN_ASSERT(AvailableBufferBytes >= ByteCount); - memcpy(Buffer, SourceBuffer, ByteCount); + ZEN_ASSERT(ChunkBuffer.GetSize() >= ByteOffset); + ZEN_ASSERT(ChunkBuffer.GetSize() - ByteOffset >= ByteCount); + MutableMemoryView Target(Buffer, ByteCount); + ChunkBuffer.CopyTo(Target, ByteOffset); } } |