mirror of
https://github.com/facebook/zstd.git
synced 2025-11-28 23:23:59 +03:00
fixed strict aliasing issue
tuned threshold
This commit is contained in:
@@ -1394,10 +1394,11 @@ static size_t ZSTD_decompressSequencesLong(
|
|||||||
|
|
||||||
|
|
||||||
static unsigned
|
static unsigned
|
||||||
ZSTD_shareLongOffsets(const FSE_DTable* offTable)
|
ZSTD_getLongOffsetsShare(const FSE_DTable* offTable)
|
||||||
{
|
{
|
||||||
U32 const tableLog = ((const FSE_DTableHeader*)offTable)[0].tableLog;
|
const void* ptr = offTable;
|
||||||
const FSE_decode_t* table = (const FSE_decode_t*)(offTable + 1);
|
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 const max = 1 << tableLog;
|
||||||
U32 u, total = 0;
|
U32 u, total = 0;
|
||||||
|
|
||||||
@@ -1442,8 +1443,8 @@ static size_t ZSTD_decompressBlock_internal(ZSTD_DCtx* dctx,
|
|||||||
srcSize -= seqHSize;
|
srcSize -= seqHSize;
|
||||||
|
|
||||||
if (dctx->fParams.windowSize > (1<<24)) {
|
if (dctx->fParams.windowSize > (1<<24)) {
|
||||||
U32 const shareLongOffsets = ZSTD_shareLongOffsets(dctx->entropy.OFTable);
|
U32 const shareLongOffsets = ZSTD_getLongOffsetsShare(dctx->entropy.OFTable);
|
||||||
U32 const minShare = MEM_64bits() ? 12 : 20;
|
U32 const minShare = MEM_64bits() ? 5 : 13;
|
||||||
if (shareLongOffsets >= minShare)
|
if (shareLongOffsets >= minShare)
|
||||||
return ZSTD_decompressSequencesLong(dctx, dst, dstCapacity, ip, srcSize, nbSeq, isLongOffset);
|
return ZSTD_decompressSequencesLong(dctx, dst, dstCapacity, ip, srcSize, nbSeq, isLongOffset);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user