diff --git a/C/zstdmt/brotli-mt_compress.c b/C/zstdmt/brotli-mt_compress.c index 736821ae..d8dad2b4 100644 --- a/C/zstdmt/brotli-mt_compress.c +++ b/C/zstdmt/brotli-mt_compress.c @@ -383,7 +383,7 @@ static size_t st_compress(void *arg) /* 0, or not specified by user; could be chosen by compressor. */ uint32_t lgwin = 24 /* DEFAULT_LGWIN */; /* Use file size to limit lgwin. */ - if (ctx->unpackSize >= 0) { + if (ctx->unpackSize >= 0 && ctx->unpackSize != (uint64_t)(int64_t)-1) { lgwin = BROTLI_MIN_WINDOW_BITS; while (BROTLI_MAX_BACKWARD_LIMIT(lgwin) < (uint64_t)ctx->unpackSize) { @@ -393,7 +393,7 @@ static size_t st_compress(void *arg) } BrotliEncoderSetParameter(state, BROTLI_PARAM_LGWIN, lgwin); } - if (ctx->unpackSize > 0) { + if (ctx->unpackSize > 0 && ctx->unpackSize != (uint64_t)(int64_t)-1) { uint32_t size_hint = ctx->unpackSize < (1 << 30) ? (uint32_t)ctx->unpackSize : (1u << 30); BrotliEncoderSetParameter(state, BROTLI_PARAM_SIZE_HINT, size_hint); diff --git a/CPP/7zip/Compress/BrotliEncoder.cpp b/CPP/7zip/Compress/BrotliEncoder.cpp index b44fc582..4343a848 100644 --- a/CPP/7zip/Compress/BrotliEncoder.cpp +++ b/CPP/7zip/Compress/BrotliEncoder.cpp @@ -15,7 +15,8 @@ CEncoder::CEncoder(): _numThreads(NWindows::NSystem::GetNumberOfProcessors()), _Long(-1), _WindowLog(-1), - _ctx(NULL) + _ctx(NULL), + unpackSize(0) { _props.clear(); } diff --git a/CPP/7zip/Compress/ZstdEncoder.cpp b/CPP/7zip/Compress/ZstdEncoder.cpp index fcfaaf77..dda80153 100644 --- a/CPP/7zip/Compress/ZstdEncoder.cpp +++ b/CPP/7zip/Compress/ZstdEncoder.cpp @@ -263,7 +263,7 @@ STDMETHODIMP CEncoder::Code(ISequentialInStream *inStream, if (ZSTD_isError(err)) return E_INVALIDARG; } - if (unpackSize) { + if (unpackSize && unpackSize != (UInt64)(Int64)-1) { // size is known err = ZSTD_CCtx_setParameter(_ctx, ZSTD_c_srcSizeHint, (int)(unpackSize <= INT_MAX ? unpackSize : INT_MAX)); if (ZSTD_isError(err)) return E_INVALIDARG; }