]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Fix NCountWriteBound
authorSen Huang <senhuang96@fb.com>
Wed, 15 Sep 2021 16:51:42 +0000 (09:51 -0700)
committerSen Huang <senhuang96@fb.com>
Wed, 15 Sep 2021 16:51:42 +0000 (09:51 -0700)
lib/compress/fse_compress.c

index faca767c5cedecdcc04e799996fbd6c3397bd770..5547b4ac099e873bb6016dfb58cbd14d6be3ae20 100644 (file)
@@ -221,7 +221,11 @@ size_t FSE_buildCTable_wksp(FSE_CTable* ct,
 ****************************************************************/
 size_t FSE_NCountWriteBound(unsigned maxSymbolValue, unsigned tableLog)
 {
-    size_t const maxHeaderSize = (((maxSymbolValue+1) * tableLog) >> 3) + 3;
+    size_t const maxHeaderSize = (((maxSymbolValue+1) * tableLog
+                                   + 4 /* bitCount initialized at 4 */
+                                   + 2 /* first two symbols may use one additional bit each */) / 8)
+                                    + 1 /* round up to whole nb bytes */
+                                    + 2 /* additional two bytes for bitstream flush */;
     return maxSymbolValue ? maxHeaderSize : FSE_NCOUNTBOUND;  /* maxSymbolValue==0 ? use default */
 }