From cae3e3c65273ac7871aeeb0bb7318c59860c7749 Mon Sep 17 00:00:00 2001 From: Nick Terrell Date: Fri, 15 Sep 2017 19:00:39 -0700 Subject: [PATCH] [fse] Fix FSE_optimalTableLog() for srcSize==1 --- lib/compress/fse_compress.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/compress/fse_compress.c b/lib/compress/fse_compress.c index cc9fa735..599280b9 100644 --- a/lib/compress/fse_compress.c +++ b/lib/compress/fse_compress.c @@ -461,6 +461,7 @@ static unsigned FSE_minTableLog(size_t srcSize, unsigned maxSymbolValue) U32 minBitsSrc = BIT_highbit32((U32)(srcSize - 1)) + 1; U32 minBitsSymbols = BIT_highbit32(maxSymbolValue) + 2; U32 minBits = minBitsSrc < minBitsSymbols ? minBitsSrc : minBitsSymbols; + assert(srcSize > 1); /* Not supported, RLE should be used instead */ return minBits; } @@ -469,6 +470,7 @@ unsigned FSE_optimalTableLog_internal(unsigned maxTableLog, size_t srcSize, unsi U32 maxBitsSrc = BIT_highbit32((U32)(srcSize - 1)) - minus; U32 tableLog = maxTableLog; U32 minBits = FSE_minTableLog(srcSize, maxSymbolValue); + assert(srcSize > 1); /* Not supported, RLE should be used instead */ if (tableLog==0) tableLog = FSE_DEFAULT_TABLELOG; if (maxBitsSrc < tableLog) tableLog = maxBitsSrc; /* Accuracy can be reduced */ if (minBits > tableLog) tableLog = minBits; /* Need a minimum to safely represent all symbol values */