From 36a84b07a8c6a33b2756baf043b80b2e419b2f32 Mon Sep 17 00:00:00 2001 From: "W. Felix Handte" Date: Fri, 16 Nov 2018 15:28:53 -0800 Subject: [PATCH] Load Dictionaries as X1 Tables --- lib/decompress/zstd_decompress.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/decompress/zstd_decompress.c b/lib/decompress/zstd_decompress.c index 510ce3c65..62ba86aa4 100644 --- a/lib/decompress/zstd_decompress.c +++ b/lib/decompress/zstd_decompress.c @@ -954,9 +954,16 @@ ZSTD_loadDEntropy(ZSTD_entropyDTables_t* entropy, ZSTD_STATIC_ASSERT(sizeof(entropy->LLTable) + sizeof(entropy->OFTable) + sizeof(entropy->MLTable) >= HUF_DECOMPRESS_WORKSPACE_SIZE); { void* const workspace = &entropy->LLTable; /* use fse tables as temporary workspace; implies fse tables are grouped together */ size_t const workspaceSize = sizeof(entropy->LLTable) + sizeof(entropy->OFTable) + sizeof(entropy->MLTable); +#ifdef HUF_DECOMPRESS_MINIMAL + /* in minimal huffman, we always use X1 variants */ + size_t const hSize = HUF_readDTableX1_wksp(entropy->hufTable, + dictPtr, dictEnd - dictPtr, + workspace, workspaceSize); +#else size_t const hSize = HUF_readDTableX2_wksp(entropy->hufTable, dictPtr, dictEnd - dictPtr, workspace, workspaceSize); +#endif if (HUF_isError(hSize)) return ERROR(dictionary_corrupted); dictPtr += hSize; }