changed update logic of repcodes

This commit is contained in:
inikep
2016-03-21 19:02:16 +01:00
parent e7ec8f2b9b
commit fc1d7bd93b
2 changed files with 37 additions and 47 deletions
+8 -10
View File
@@ -683,10 +683,14 @@ static void ZSTD_decodeSequence(seq_t* seq, seqState_t* seqState, const U32 mls)
if (offsetCode==0) offset = 0;
if (offset < ZSTD_REP_NUM) {
#if 0
if (!litLength && offset <= 1)
offset = 1-offset;
#endif
if (litLength == 0) {
if (offset <= 1) offset = 1-offset;
offset = seqState->prevOffset[offset];
size_t temp = seqState->prevOffset[1];
seqState->prevOffset[1] = seqState->prevOffset[0];
seqState->prevOffset[0] = temp;
}
else
if (offset != 0) {
size_t temp = seqState->prevOffset[offset];
if (offset != 1) {
@@ -700,12 +704,6 @@ static void ZSTD_decodeSequence(seq_t* seq, seqState_t* seqState, const U32 mls)
offset = seqState->prevOffset[0];
}
if (litLength == 0) {
size_t temp = seqState->prevOffset[1];
seqState->prevOffset[1] = seqState->prevOffset[0];
seqState->prevOffset[0] = temp;
// offset = seqState->prevOffset[0];
}
} else {
offset -= ZSTD_REP_MOVE;
if (kSlotNew < 3) seqState->prevOffset[3] = seqState->prevOffset[2];