From: Meghna Malhotra Date: Sat, 1 Feb 2020 19:56:31 +0000 (-0800) Subject: Move rank table into HUF_buildCTable_wksp() X-Git-Tag: v1.4.5^2~51^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fdb2780c47727eb8ec0fb354dfc4c6730bbd67d1;p=thirdparty%2Fzstd.git Move rank table into HUF_buildCTable_wksp() --- diff --git a/lib/compress/huf_compress.c b/lib/compress/huf_compress.c index 5cab31d04..f81a2f386 100644 --- a/lib/compress/huf_compress.c +++ b/lib/compress/huf_compress.c @@ -295,12 +295,11 @@ typedef struct { U32 current; } rankPos; -static void HUF_sort(nodeElt* huffNode, const unsigned* count, U32 maxSymbolValue) +static void HUF_sort(nodeElt* huffNode, const unsigned* count, U32 maxSymbolValue, rankPos* rank) { - rankPos rank[32]; U32 n; - memset(rank, 0, sizeof(rank)); + memset(rank, 0, sizeof(rankPos)*32); for (n=0; n<=maxSymbolValue; n++) { U32 r = BIT_highbit32(count[n] + 1); rank[r].base ++; @@ -335,6 +334,7 @@ size_t HUF_buildCTable_wksp (HUF_CElt* tree, const unsigned* count, U32 maxSymbo int lowS, lowN; U16 nodeNb = STARTNODE; U32 nodeRoot; + rankPos rank[32]; /* safety checks */ if (((size_t)workSpace & 3) != 0) return ERROR(GENERIC); /* must be aligned on 4-bytes boundaries */ @@ -344,7 +344,7 @@ size_t HUF_buildCTable_wksp (HUF_CElt* tree, const unsigned* count, U32 maxSymbo memset(huffNode0, 0, sizeof(huffNodeTable)); /* sort, decreasing order */ - HUF_sort(huffNode, count, maxSymbolValue); + HUF_sort(huffNode, count, maxSymbolValue, rank); /* init for parents */ nonNullRank = maxSymbolValue;