]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
modified format
authorYann Collet <yann.collet.73@gmail.com>
Fri, 20 Nov 2015 11:04:52 +0000 (12:04 +0100)
committerYann Collet <yann.collet.73@gmail.com>
Fri, 20 Nov 2015 11:04:52 +0000 (12:04 +0100)
lib/zstd_decompress.c

index c6938d48b824ceabdebeb37191fcd73dbc4e0fe3..430dc7acad52a40d791c7a60de4d700677d04a36 100644 (file)
@@ -404,8 +404,7 @@ static void ZSTD_decodeSequence(seq_t* seq, seqState_t* seqState)
 
     /* Literal length */
     litLength = FSE_decodeSymbol(&(seqState->stateLL), &(seqState->DStream));
-    prevOffset = litLength ? seq->offset : seqState->prevOffset;
-    seqState->prevOffset = seq->offset;
+    prevOffset = litLength ? seq->offset : seqState->prevOffset;    
     if (litLength == MaxLL)
     {
         U32 add = *dumps++;
@@ -432,6 +431,7 @@ static void ZSTD_decodeSequence(seq_t* seq, seqState_t* seqState)
         offset = offsetPrefix[offsetCode] + BIT_readBits(&(seqState->DStream), nbBits);
         if (MEM_32bits()) BIT_reloadDStream(&(seqState->DStream));
         if (offsetCode==0) offset = prevOffset;   /* cmove */
+        if (offsetCode | !litLength) seqState->prevOffset = seq->offset;   /* cmove */
     }
 
     /* MatchLength */