]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fixed extraordinary scenario where all fields use maximum possible nb of bits simulta... 812/head
authorYann Collet <cyan@fb.com>
Tue, 22 Aug 2017 19:08:39 +0000 (12:08 -0700)
committerYann Collet <cyan@fb.com>
Tue, 22 Aug 2017 19:09:21 +0000 (12:09 -0700)
can only happen if windowLog>=27  (level 22 --ultra)

lib/compress/zstd_compress.c

index 0322c03eb31663c4aeb49ffa1dd55e6bf1737d93..66641e3d9c7e0a042993aa1d24d7fda94aa77f37 100644 (file)
@@ -1131,7 +1131,7 @@ MEM_STATIC size_t ZSTD_encodeSequences(void* dst, size_t dstCapacity,
             BIT_addBits(&blockStream, sequences[n].litLength, llBits);
             if (MEM_32bits() && ((llBits+mlBits)>24)) BIT_flushBits(&blockStream);
             BIT_addBits(&blockStream, sequences[n].matchLength, mlBits);
-            if (MEM_32bits()) BIT_flushBits(&blockStream);                  /* (7)*/
+            if (MEM_32bits() || (ofBits+mlBits+llBits > 56)) BIT_flushBits(&blockStream);
             if (longOffsets) {
                 int const extraBits = ofBits - MIN(ofBits, STREAM_ACCUMULATOR_MIN-1);
                 if (extraBits) {