]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Move rank table into HUF_buildCTable_wksp()
authorMeghna Malhotra <m_malhotra@protonmail.com>
Sat, 1 Feb 2020 19:56:31 +0000 (11:56 -0800)
committerMeghna Malhotra <m_malhotra@protonmail.com>
Fri, 1 May 2020 20:45:48 +0000 (13:45 -0700)
lib/compress/huf_compress.c

index 5cab31d042f8028b154fe420fbf0ba7842661181..f81a2f38672463aa45dc13813172fa2dc8e823e5 100644 (file)
@@ -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;