MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / decompress

Method decompress

source/core/StarZSTDCompression.cpp:64–87  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

62DecompressionStream::~DecompressionStream() { ZSTD_freeDStream(m_dStream); }
63
64void DecompressionStream::decompress(const char* in, size_t inLen, ByteArray& out) {
65 size_t const dOutSize = ZSTD_DStreamOutSize();
66 ZSTD_inBuffer inBuffer = {in, inLen, 0};
67 size_t written = out.size();
68 out.resize(out.size() + dOutSize);
69 bool finished = false;
70 do {
71 ZSTD_outBuffer outBuffer = {out.ptr() + written, min(dOutSize, out.size() - written), 0};
72 size_t ret = ZSTD_decompressStream(m_dStream, &outBuffer, &inBuffer);
73 if (ZSTD_isError(ret)) {
74 throw IOException(strf("ZSTD decompression error {}", ZSTD_getErrorName(ret)));
75 break;
76 }
77
78 written += outBuffer.pos;
79 if (outBuffer.pos == outBuffer.size) {
80 if (written >= out.size())
81 out.resize(out.size() * 2);
82 continue;
83 }
84 finished = inBuffer.pos == inBuffer.size;
85 } while (!finished);
86 out.resize(written);
87}
88
89void DecompressionStream::decompress(ByteArray const& in, ByteArray& out) {
90 return decompress(in.ptr(), in.size(), out);

Callers 1

readDataMethod · 0.80

Calls 4

strfFunction · 0.85
sizeMethod · 0.45
resizeMethod · 0.45
ptrMethod · 0.45

Tested by

no test coverage detected