Skip to content
Permalink
Browse files
Merge pull request #11058 from shuffle2/updater-inflate
Updater: Move inflate intermediate buffer to heap and enlarge
  • Loading branch information
AdmiralCurtiss committed Sep 20, 2022
2 parents 3b10bf0 + 7432b6c commit d04e1ca
Showing 1 changed file with 6 additions and 4 deletions.
@@ -4,6 +4,7 @@
#include "UpdaterCommon/UpdaterCommon.h"

#include <array>
#include <memory>
#include <optional>

#include <OptionParser.h>
@@ -132,16 +133,17 @@ std::optional<std::string> GzipInflate(const std::string& data)
inflateInit2(&zstrm, 16 + MAX_WBITS);

std::string out;
char buffer[4096];
const size_t buf_len = 20 * 1024 * 1024;
auto buffer = std::make_unique<char[]>(buf_len);
int ret;

do
{
zstrm.avail_out = sizeof(buffer);
zstrm.next_out = reinterpret_cast<u8*>(buffer);
zstrm.avail_out = buf_len;
zstrm.next_out = reinterpret_cast<u8*>(buffer.get());

ret = inflate(&zstrm, 0);
out.append(buffer, sizeof(buffer) - zstrm.avail_out);
out.append(buffer.get(), buf_len - zstrm.avail_out);
} while (ret == Z_OK);

inflateEnd(&zstrm);

0 comments on commit d04e1ca

Please sign in to comment.