From 9b9f7e2a1d7b80ee6f0231ba6d4c10ec9bcd0db2 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Fri, 22 Mar 2024 17:34:49 +0100 Subject: [PATCH] fix: Decompress functions not extracting full data Thanks a lot to tocklime --- .../source/content/pl_functions.cpp | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/plugins/decompress/source/content/pl_functions.cpp b/plugins/decompress/source/content/pl_functions.cpp index 0d8972a1f..c57a1d20f 100644 --- a/plugins/decompress/source/content/pl_functions.cpp +++ b/plugins/decompress/source/content/pl_functions.cpp @@ -80,9 +80,10 @@ namespace hex::plugin::decompress { if (stream.avail_out != 0) break; - section.resize(section.size() * 2); - stream.next_out = section.data(); - stream.avail_out = section.size(); + const auto prevSectionSize = section.size(); + section.resize(prevSectionSize * 2); + stream.next_out = section.data() + prevSectionSize; + stream.avail_out = prevSectionSize; } return true; @@ -126,9 +127,10 @@ namespace hex::plugin::decompress { if (stream.avail_out != 0) break; - section.resize(section.size() * 2); - stream.next_out = reinterpret_cast(section.data()); - stream.avail_out = section.size(); + const auto prevSectionSize = section.size(); + section.resize(prevSectionSize * 2); + stream.next_out = reinterpret_cast(section.data()) + prevSectionSize; + stream.avail_out = prevSectionSize; } return true; @@ -173,9 +175,10 @@ namespace hex::plugin::decompress { if (stream.avail_out != 0) break; - section.resize(section.size() * 2); - stream.next_out = compressedData.data(); - stream.avail_out = compressedData.size(); + const auto prevSectionSize = section.size(); + section.resize(prevSectionSize * 2); + stream.next_out = section.data() + prevSectionSize; + stream.avail_out = prevSectionSize; } return true;