diff --git a/lib/zstd.c b/lib/zstd.c index d4c17f33..63ae947d 100644 --- a/lib/zstd.c +++ b/lib/zstd.c @@ -114,7 +114,7 @@ static const U32 g_searchStrength = 8; #define Offbits 5 #define MaxML ((1<stateOffb), &(seqState->DStream)); + offsetCode = FSE_decodeSymbol(&(seqState->stateOffb), &(seqState->DStream)); /* <= maxOff, by table construction */ if (MEM_32bits()) BIT_reloadDStream(&(seqState->DStream)); nbBits = offsetCode - 1; if (offsetCode==0) nbBits = 0; /* cmove */ - offset = ((size_t)1 << (nbBits & ((sizeof(offset)*8)-1))) + BIT_readBits(&(seqState->DStream), nbBits); + offset = offsetPrefix[offsetCode] + BIT_readBits(&(seqState->DStream), nbBits); if (MEM_32bits()) BIT_reloadDStream(&(seqState->DStream)); if (offsetCode==0) offset = prevOffset; /* cmove */ }