From 75cd9bd4e49047af761bdb3453c84767e1787170 Mon Sep 17 00:00:00 2001 From: Jan Date: Sun, 15 Oct 2023 22:31:21 +0200 Subject: [PATCH] Fix not respecting chunk buffer window border --- src/ObjWriting/ObjContainer/IPak/IPakWriter.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ObjWriting/ObjContainer/IPak/IPakWriter.cpp b/src/ObjWriting/ObjContainer/IPak/IPakWriter.cpp index fd081f4c..2dedce49 100644 --- a/src/ObjWriting/ObjContainer/IPak/IPakWriter.cpp +++ b/src/ObjWriting/ObjContainer/IPak/IPakWriter.cpp @@ -198,6 +198,14 @@ public: const auto remainingSize = dataSize - dataOffset; const auto remainingChunkBufferWindowSize = std::max((ipak_consts::IPAK_CHUNK_COUNT_PER_READ * ipak_consts::IPAK_CHUNK_SIZE) - static_cast(m_current_offset - m_chunk_buffer_window_start), 0u); + + if (remainingChunkBufferWindowSize == 0) + { + FlushChunk(); + StartNewBlock(); + continue; + } + const auto commandSize = std::min(std::min(remainingSize, ipak_consts::IPAK_COMMAND_DEFAULT_SIZE), remainingChunkBufferWindowSize); auto writeUncompressed = true;