]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fixed strict aliasing issue
authorYann Collet <cyan@fb.com>
Fri, 9 Feb 2018 21:10:32 +0000 (13:10 -0800)
committerYann Collet <cyan@fb.com>
Fri, 9 Feb 2018 21:24:11 +0000 (13:24 -0800)
tuned threshold

lib/decompress/zstd_decompress.c

index 3d1f36404fe2e4ea860737c37190f0a4d8e71974..63985933a68efda49f96ce5175a323fb3d1b382a 100644 (file)
@@ -1394,10 +1394,11 @@ static size_t ZSTD_decompressSequencesLong(
 
 
 static unsigned
-ZSTD_shareLongOffsets(const FSE_DTable* offTable)
+ZSTD_getLongOffsetsShare(const FSE_DTable* offTable)
 {
-    U32 const tableLog = ((const FSE_DTableHeader*)offTable)[0].tableLog;
-    const FSE_decode_t* table = (const FSE_decode_t*)(offTable + 1);
+    const void* ptr = offTable;
+    U32 const tableLog = ((const FSE_DTableHeader*)ptr)[0].tableLog;
+    const FSE_decode_t* table = ((const FSE_decode_t*)ptr) + 1;
     U32 const max = 1 << tableLog;
     U32 u, total = 0;
 
@@ -1442,8 +1443,8 @@ static size_t ZSTD_decompressBlock_internal(ZSTD_DCtx* dctx,
         srcSize -= seqHSize;
 
         if (dctx->fParams.windowSize > (1<<24)) {
-            U32 const shareLongOffsets = ZSTD_shareLongOffsets(dctx->entropy.OFTable);
-            U32 const minShare = MEM_64bits() ? 12 : 20;
+            U32 const shareLongOffsets = ZSTD_getLongOffsetsShare(dctx->entropy.OFTable);
+            U32 const minShare = MEM_64bits() ? 5 : 13;
             if (shareLongOffsets >= minShare)
                 return ZSTD_decompressSequencesLong(dctx, dst, dstCapacity, ip, srcSize, nbSeq, isLongOffset);
         }