From 446d4429890b0a77327de69986eec4644237d22b Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Tue, 21 Jun 2016 14:14:02 +0200 Subject: [PATCH] zbufftest now ensures ZBUFF_compressEnd() is fully flushed in a single pass if dst buffer is large enough --- programs/zbufftest.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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);