aboutsummaryrefslogtreecommitdiff
path: root/src/zencore/compress.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2025-11-27 10:22:16 +0100
committerGitHub Enterprise <[email protected]>2025-11-27 10:22:16 +0100
commit48d5495d5b53497f540f00929c2764bf5c13a58f (patch)
tree90dcdf69c0bb9823155f22f31eece9e0e6b70584 /src/zencore/compress.cpp
parentRawOffset can be anything and we expect an empty buffer to be returned along ... (diff)
downloadzen-48d5495d5b53497f540f00929c2764bf5c13a58f.tar.xz
zen-48d5495d5b53497f540f00929c2764bf5c13a58f.zip
fix stream decompress (#668)
* fix source file offset in DecompressToStream implementations
Diffstat (limited to 'src/zencore/compress.cpp')
-rw-r--r--src/zencore/compress.cpp24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/zencore/compress.cpp b/src/zencore/compress.cpp
index 84af83119..0c53a8000 100644
--- a/src/zencore/compress.cpp
+++ b/src/zencore/compress.cpp
@@ -342,14 +342,18 @@ public:
{
ZEN_ASSERT(FileRef.FileHandle != nullptr);
uint64_t CallbackOffset = 0;
- ScanFile(FileRef.FileHandle, sizeof(BufferHeader) + RawOffset, RawSize, 512u * 1024u, [&](const void* Data, size_t Size) {
- if (Result)
- {
- CompositeBuffer Tmp(SharedBuffer::MakeView(Data, Size));
- Result = Callback(sizeof(BufferHeader) + RawOffset + CallbackOffset, Size, CallbackOffset, Tmp);
- }
- CallbackOffset += Size;
- });
+ ScanFile(FileRef.FileHandle,
+ FileRef.FileChunkOffset + sizeof(BufferHeader) + RawOffset,
+ RawSize,
+ 512u * 1024u,
+ [&](const void* Data, size_t Size) {
+ if (Result)
+ {
+ CompositeBuffer Tmp(SharedBuffer::MakeView(Data, Size));
+ Result = Callback(sizeof(BufferHeader) + RawOffset + CallbackOffset, Size, CallbackOffset, Tmp);
+ }
+ CallbackOffset += Size;
+ });
return Result;
}
else
@@ -892,7 +896,7 @@ BlockDecoder::DecompressToStream(
Source.Detach();
return false;
}
- if (!Callback(FileRef.FileChunkOffset + CompressedOffset,
+ if (!Callback(CompressedOffset,
CompressedBlockSize,
BlockIndex * BlockSize + OffsetInFirstBlock,
CompositeBuffer(IoBuffer(IoBuffer::Wrap, RawDataBuffer.GetData(), BytesToUncompress))))
@@ -904,7 +908,7 @@ BlockDecoder::DecompressToStream(
else
{
if (!Callback(
- FileRef.FileChunkOffset + CompressedOffset,
+ CompressedOffset,
BytesToUncompress,
BlockIndex * BlockSize + OffsetInFirstBlock,
CompositeBuffer(