summaryrefslogtreecommitdiffstats
path: root/lib/zstd/common/fse.h
diff options
context:
space:
mode:
authorNick Terrell <terrelln@fb.com>2022-12-13 16:24:40 -0800
committerNick Terrell <terrelln@fb.com>2022-12-13 16:24:40 -0800
commit70d822cfb782ebed5c41bdad9fa520b5ec1c6923 (patch)
tree50b71fef1b2eaca80a1ab159cfffb4e678c2278b /lib/zstd/common/fse.h
parent4f2c0a4acffbec01079c28f839422e64ddeff004 (diff)
parent2aa14b1ab2c41a4fe41efae80d58bb77da91f19f (diff)
downloadlinux-70d822cfb782ebed5c41bdad9fa520b5ec1c6923.tar.bz2
Merge branch 'zstd-next' into zstd-linus
Diffstat (limited to 'lib/zstd/common/fse.h')
-rw-r--r--lib/zstd/common/fse.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/zstd/common/fse.h b/lib/zstd/common/fse.h
index 0bb174c2c367..4507043b2287 100644
--- a/lib/zstd/common/fse.h
+++ b/lib/zstd/common/fse.h
@@ -333,8 +333,9 @@ size_t FSE_buildCTable_rle (FSE_CTable* ct, unsigned char symbolValue);
/* FSE_buildCTable_wksp() :
* Same as FSE_buildCTable(), but using an externally allocated scratch buffer (`workSpace`).
* `wkspSize` must be >= `FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(maxSymbolValue, tableLog)` of `unsigned`.
+ * See FSE_buildCTable_wksp() for breakdown of workspace usage.
*/
-#define FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(maxSymbolValue, tableLog) (maxSymbolValue + 2 + (1ull << (tableLog - 2)))
+#define FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(maxSymbolValue, tableLog) (((maxSymbolValue + 2) + (1ull << (tableLog)))/2 + sizeof(U64)/sizeof(U32) /* additional 8 bytes for potential table overwrite */)
#define FSE_BUILD_CTABLE_WORKSPACE_SIZE(maxSymbolValue, tableLog) (sizeof(unsigned) * FSE_BUILD_CTABLE_WORKSPACE_SIZE_U32(maxSymbolValue, tableLog))
size_t FSE_buildCTable_wksp(FSE_CTable* ct, const short* normalizedCounter, unsigned maxSymbolValue, unsigned tableLog, void* workSpace, size_t wkspSize);