From: Yann Collet Date: Tue, 21 Jun 2016 12:14:02 +0000 (+0200) Subject: zbufftest now ensures ZBUFF_compressEnd() is fully flushed in a single pass if dst... X-Git-Tag: v0.7.1~1^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=446d4429890b0a77327de69986eec4644237d22b;p=thirdparty%2Fzstd.git zbufftest now ensures ZBUFF_compressEnd() is fully flushed in a single pass if dst buffer is large enough --- diff --git a/programs/zbufftest.c b/programs/zbufftest.c index 3ff55fc22..41dfa3384 100644 --- a/programs/zbufftest.c +++ b/programs/zbufftest.c @@ -421,13 +421,15 @@ static int fuzzerTests(U32 seed, U32 nbTests, unsigned startTest, double compres } } /* final frame epilogue */ - { size_t remainingToFlush = 1; + { size_t remainingToFlush = (size_t)(-1); while (remainingToFlush) { size_t const randomDstSize = FUZ_randomLength(&lseed, maxSampleLog); size_t dstBuffSize = MIN(cBufferSize - cSize, randomDstSize); + U32 const enoughDstSize = dstBuffSize >= remainingToFlush; remainingToFlush = ZBUFF_compressEnd(zc, cBuffer+cSize, &dstBuffSize); CHECK (ZBUFF_isError(remainingToFlush), "flush error : %s", ZBUFF_getErrorName(remainingToFlush)); //DISPLAY("flush %u bytes : still within context : %i \n", (U32)dstBuffSize, (int)remainingToFlush); + CHECK (enoughDstSize && remainingToFlush, "ZBUFF_compressEnd() not fully flushed, but enough space available"); cSize += dstBuffSize; } } crcOrig = XXH64_digest(&xxhState);