LzmaDec.c (p7zip_15.14.1_src_all) | : | LzmaDec.c (p7zip_16.02_src_all) | ||
---|---|---|---|---|
/* LzmaDec.c -- LZMA Decoder | /* LzmaDec.c -- LZMA Decoder | |||
2015-06-23 : Igor Pavlov : Public domain */ | 2016-05-16 : Igor Pavlov : Public domain */ | |||
#include "Precomp.h" | #include "Precomp.h" | |||
#include "LzmaDec.h" | #include "LzmaDec.h" | |||
#include <string.h> | #include <string.h> | |||
#define kNumTopBits 24 | #define kNumTopBits 24 | |||
#define kTopValue ((UInt32)1 << kNumTopBits) | #define kTopValue ((UInt32)1 << kNumTopBits) | |||
skipping to change at line 295 | skipping to change at line 295 | |||
} | } | |||
rep1 = rep0; | rep1 = rep0; | |||
rep0 = distance; | rep0 = distance; | |||
} | } | |||
state = state < kNumLitStates ? 8 : 11; | state = state < kNumLitStates ? 8 : 11; | |||
prob = probs + RepLenCoder; | prob = probs + RepLenCoder; | |||
} | } | |||
#ifdef _LZMA_SIZE_OPT | #ifdef _LZMA_SIZE_OPT | |||
{ | { | |||
unsigned limit, offset; | unsigned lim, offset; | |||
CLzmaProb *probLen = prob + LenChoice; | CLzmaProb *probLen = prob + LenChoice; | |||
IF_BIT_0(probLen) | IF_BIT_0(probLen) | |||
{ | { | |||
UPDATE_0(probLen); | UPDATE_0(probLen); | |||
probLen = prob + LenLow + (posState << kLenNumLowBits); | probLen = prob + LenLow + (posState << kLenNumLowBits); | |||
offset = 0; | offset = 0; | |||
limit = (1 << kLenNumLowBits); | lim = (1 << kLenNumLowBits); | |||
} | } | |||
else | else | |||
{ | { | |||
UPDATE_1(probLen); | UPDATE_1(probLen); | |||
probLen = prob + LenChoice2; | probLen = prob + LenChoice2; | |||
IF_BIT_0(probLen) | IF_BIT_0(probLen) | |||
{ | { | |||
UPDATE_0(probLen); | UPDATE_0(probLen); | |||
probLen = prob + LenMid + (posState << kLenNumMidBits); | probLen = prob + LenMid + (posState << kLenNumMidBits); | |||
offset = kLenNumLowSymbols; | offset = kLenNumLowSymbols; | |||
limit = (1 << kLenNumMidBits); | lim = (1 << kLenNumMidBits); | |||
} | } | |||
else | else | |||
{ | { | |||
UPDATE_1(probLen); | UPDATE_1(probLen); | |||
probLen = prob + LenHigh; | probLen = prob + LenHigh; | |||
offset = kLenNumLowSymbols + kLenNumMidSymbols; | offset = kLenNumLowSymbols + kLenNumMidSymbols; | |||
limit = (1 << kLenNumHighBits); | lim = (1 << kLenNumHighBits); | |||
} | } | |||
} | } | |||
TREE_DECODE(probLen, limit, len); | TREE_DECODE(probLen, lim, len); | |||
len += offset; | len += offset; | |||
} | } | |||
#else | #else | |||
{ | { | |||
CLzmaProb *probLen = prob + LenChoice; | CLzmaProb *probLen = prob + LenChoice; | |||
IF_BIT_0(probLen) | IF_BIT_0(probLen) | |||
{ | { | |||
UPDATE_0(probLen); | UPDATE_0(probLen); | |||
probLen = prob + LenLow + (posState << kLenNumLowBits); | probLen = prob + LenLow + (posState << kLenNumLowBits); | |||
len = 1; | len = 1; | |||
End of changes. 6 change blocks. | ||||
6 lines changed or deleted | 6 lines changed or added |