@@ -252,21 +252,21 @@ bool LZXCodec<T>::forward(SliceArray<byte>& input, SliceArray<byte>& output, int
252
252
// or 3 bits litLen + 3 bits flag + 2 bits mLen (LLLFFFMM)
253
253
// LLL : <= 7 --> LLL == literal length (if 7, remainder encoded outside of token)
254
254
// MMM : <= 7 --> MMM == match length (if 7, remainder encoded outside of token)
255
- // FF = 00 --> 1 byte dist
256
- // FF = 01 --> 2 byte dist
257
- // FF = 10 --> 3 byte dist
258
- // FFF = 110 --> dist == repd0
259
- // FFF = 111 --> dist == repd1
255
+ // FF = 01 --> 1 byte dist
256
+ // FF = 10 --> 2 byte dist
257
+ // FF = 11 --> 3 byte dist
258
+ // FFF = 000 --> dist == repd0
259
+ // FFF = 001 --> dist == repd1
260
260
const int dist = srcIdx - ref;
261
261
const int mLen = bestLen - minMatch;
262
262
int token, mLenTh ;
263
263
264
264
if (dist == repd[0 ]) {
265
- token = 0x18 ;
265
+ token = 0x00 ;
266
266
mLenTh = 3 ;
267
267
}
268
268
else if (dist == repd[1 ]) {
269
- token = 0x1C ;
269
+ token = 0x04 ;
270
270
mLenTh = 3 ;
271
271
}
272
272
else {
@@ -275,13 +275,13 @@ bool LZXCodec<T>::forward(SliceArray<byte>& input, SliceArray<byte>& output, int
275
275
_mBuf[mIdx ] = byte (dist >> 16 );
276
276
_mBuf[mIdx + 1 ] = byte (dist >> 8 );
277
277
mIdx += 2 ;
278
- token = 0x10 ;
278
+ token = 0x18 ;
279
279
}
280
280
else {
281
281
_mBuf[mIdx ] = byte (dist >> 8 );
282
282
const int inc = (dist >= 256 ? 1 : 0 );
283
283
mIdx += inc;
284
- token = inc << 3 ;
284
+ token = ( inc + 1 ) << 3 ;
285
285
}
286
286
287
287
_mBuf[mIdx ++] = byte (dist);
@@ -465,7 +465,7 @@ bool LZXCodec<T>::inverseV6(SliceArray<byte>& input, SliceArray<byte>& output, i
465
465
// Get match length and distance
466
466
int mLen , dist;
467
467
468
- if ((token & 0x18 ) == 0x18 ) {
468
+ if ((token & 0x18 ) == 0 ) {
469
469
// Repetition distance, read mLen remainder (if any) outside of token
470
470
mLen = token & 0x03 ;
471
471
mLen += (mLen == 3 ) ? minMatch + readLength (src, mLenIdx ) : minMatch;
@@ -476,8 +476,8 @@ bool LZXCodec<T>::inverseV6(SliceArray<byte>& input, SliceArray<byte>& output, i
476
476
mLen = token & 0x07 ;
477
477
mLen += (mLen == 7 ) ? minMatch + readLength (src, mLenIdx ) : minMatch;
478
478
dist = int (src[mIdx ++]);
479
- const int f2 = (token >> 4 ) & 1 ;
480
- const int f1 = f2 | (( token >> 3 ) & 1 ) ;
479
+ const int f1 = (token >> 4 ) & 1 ;
480
+ const int f2 = ( token >> 3 ) & f1 ;
481
481
dist = (dist << (8 * f1)) | (-f1 & int (src[mIdx ]));
482
482
mIdx += f1;
483
483
dist = (dist << (8 * f2)) | (-f2 & int (src[mIdx ]));
0 commit comments