Fix decompression code ZstdDecoder.cpp

- remove (nearly) all threading stuff
- check if decompression works with different data sets
This commit is contained in:
Tino Reichardt
2018-10-28 19:07:05 +01:00
parent 739ec50c75
commit 54a9234630
3 changed files with 95 additions and 48 deletions
+12 -5
View File
@@ -133,12 +133,19 @@ STDMETHODIMP CEncoder::Code(ISequentialInStream *inStream,
ReleaseMutex(_hMutex);
for (;;) {
outBuff = { _dstBuf, _dstBufSize, 0 };
outBuff.dst = _dstBuf;
outBuff.size = _dstBufSize;
outBuff.pos = 0;
if (ZSTD_todo == ZSTD_e_continue)
inBuff = { _srcBuf, srcSize, 0 };
else
inBuff = { NULL, srcSize, 0 };
if (ZSTD_todo == ZSTD_e_continue) {
inBuff.src = _srcBuf;
inBuff.size = srcSize;
inBuff.pos = 0;
} else {
inBuff.src = 0;
inBuff.size = srcSize;
inBuff.pos = 0;
}
err = ZSTD_compress_generic(_ctx, &outBuff, &inBuff, ZSTD_todo);
if (ZSTD_isError(err)) return E_FAIL;