|  line  | 
 true  | 
 false  | 
 branch  | 
 
| 
210
 | 
 0  | 
 0  | 
     if (LZ4F_isError(code)) return LZ4F_errorStrings[-(int)(code)];  | 
 
| 
216
 | 
 0  | 
 0  | 
     if (!LZ4F_isError(functionResult)) return LZ4F_OK_NoError;  | 
 
| 
241
 | 
 3  | 
 9  | 
     if (blockSizeID == 0) blockSizeID = LZ4F_BLOCKSIZEID_DEFAULT;  | 
 
| 
243
 | 
 0  | 
 12  | 
     if (blockSizeID > 3) return err0r(LZ4F_ERROR_maxBlockSize_invalid);  | 
 
| 
262
 | 
 0  | 
 1  | 
     while (requestedBSID > proposedBSID) {  | 
 
| 
263
 | 
 0  | 
 0  | 
         if (srcSize <= maxBlockSize)  | 
 
| 
284
 | 
 0  | 
 3  | 
     {   const LZ4F_preferences_t* const prefsPtr = (preferencesPtr==NULL) ? &prefsNull : preferencesPtr;  | 
 
| 
293
 | 
 3  | 
 0  | 
         size_t const lastBlockSize = flush ? partialBlockSize : 0;  | 
 
| 
310
 | 
 2  | 
 0  | 
     if (preferencesPtr!=NULL) prefs = *preferencesPtr;  | 
 
| 
344
 | 
 1  | 
 0  | 
     if (preferencesPtr!=NULL)  | 
 
| 
348
 | 
 1  | 
 0  | 
     if (prefs.frameInfo.contentSize != 0)  | 
 
| 
353
 | 
 0  | 
 1  | 
     if (srcSize <= LZ4F_getBlockSize(prefs.frameInfo.blockSizeID))  | 
 
| 
356
 | 
 1  | 
 0  | 
     if (prefs.compressionLevel < LZ4HC_CLEVEL_MIN) {  | 
 
| 
364
 | 
 0  | 
 1  | 
     if (dstCapacity < LZ4F_compressFrameBound(srcSize, &prefs))  /* condition to guarantee success */  | 
 
| 
368
 | 
 0  | 
 1  | 
       if (LZ4F_isError(headerSize)) return headerSize;  | 
 
| 
372
 | 
 0  | 
 1  | 
       if (LZ4F_isError(cSize)) return cSize;  | 
 
| 
376
 | 
 0  | 
 1  | 
       if (LZ4F_isError(tailSize)) return tailSize;  | 
 
| 
379
 | 
 0  | 
 1  | 
     if (prefs.compressionLevel >= LZ4HC_CLEVEL_MIN)  /* Ctx allocation only for lz4hc */  | 
 
| 
423
 | 
 0  | 
 0  | 
     if (!cdict) return NULL;  | 
 
| 
424
 | 
 0  | 
 0  | 
     if (dictSize > 64 KB) {  | 
 
| 
431
 | 
 0  | 
 0  | 
     if (!cdict->dictContent || !cdict->fastCtx || !cdict->HCCtx) {  | 
 
| 
 | 
 0  | 
 0  | 
     if (!cdict->dictContent || !cdict->fastCtx || !cdict->HCCtx) {  | 
 
| 
 | 
 0  | 
 0  | 
     if (!cdict->dictContent || !cdict->fastCtx || !cdict->HCCtx) {  | 
 
| 
445
 | 
 0  | 
 0  | 
     if (cdict==NULL) return;  /* support free on NULL */  | 
 
| 
468
 | 
 0  | 
 0  | 
     if (cctxPtr==NULL) return err0r(LZ4F_ERROR_allocation_failed);  | 
 
| 
483
 | 
 0  | 
 0  | 
     if (cctxPtr != NULL) {  /* support free on NULL */  | 
 
| 
509
 | 
 0  | 
 1  | 
     if (dstCapacity < maxFHSize) return err0r(LZ4F_ERROR_dstMaxSize_tooSmall);  | 
 
| 
511
 | 
 0  | 
 1  | 
     if (preferencesPtr == NULL) preferencesPtr = &prefNull;  | 
 
| 
515
 | 
 1  | 
 0  | 
     {   U32 const ctxTypeID = (cctxPtr->prefs.compressionLevel < LZ4HC_CLEVEL_MIN) ? 1 : 2;  /* 0:nothing ; 1:LZ4 table ; 2:HC tables */  | 
 
| 
516
 | 
 0  | 
 1  | 
         if (cctxPtr->lz4CtxLevel < ctxTypeID) {  | 
 
| 
518
 | 
 0  | 
 0  | 
             if (cctxPtr->prefs.compressionLevel < LZ4HC_CLEVEL_MIN)  | 
 
| 
522
 | 
 0  | 
 0  | 
             if (cctxPtr->lz4CtxPtr == NULL) return err0r(LZ4F_ERROR_allocation_failed);  | 
 
| 
527
 | 
 1  | 
 0  | 
     if (cctxPtr->prefs.frameInfo.blockSizeID == 0)  | 
 
| 
532
 | 
 1  | 
 0  | 
                 (cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) * 64 KB :  /* only needs windows size */  | 
 
| 
 | 
 1  | 
 0  | 
                 (cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) * 64 KB :  /* only needs windows size */  | 
 
| 
533
 | 
 0  | 
 0  | 
                 cctxPtr->maxBlockSize + ((cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) * 128 KB);  | 
 
| 
535
 | 
 0  | 
 1  | 
         if (cctxPtr->maxBufferSize < requiredBuffSize) {  | 
 
| 
539
 | 
 0  | 
 0  | 
             if (cctxPtr->tmpBuff == NULL) return err0r(LZ4F_ERROR_allocation_failed);  | 
 
| 
548
 | 
 1  | 
 0  | 
     if (cctxPtr->prefs.frameInfo.blockMode == LZ4F_blockLinked) {  | 
 
| 
550
 | 
 0  | 
 1  | 
         if (cdict) {  | 
 
| 
551
 | 
 0  | 
 0  | 
             if (cctxPtr->prefs.compressionLevel < LZ4HC_CLEVEL_MIN) {  | 
 
| 
558
 | 
 1  | 
 0  | 
             if (cctxPtr->prefs.compressionLevel < LZ4HC_CLEVEL_MIN)  | 
 
| 
571
 | 
 1  | 
 0  | 
     *dstPtr++ = (BYTE)(((1 & _2BITS) << 6)    /* Version('01') */  | 
 
| 
580
 | 
 1  | 
 0  | 
     if (cctxPtr->prefs.frameInfo.contentSize) {  | 
 
| 
586
 | 
 0  | 
 1  | 
     if (cctxPtr->prefs.frameInfo.dictID) {  | 
 
| 
641
 | 
 0  | 
 13  | 
     if (cSize == 0) {  /* compression failed */  | 
 
| 
646
 | 
 0  | 
 13  | 
     if (crcFlag) {  | 
 
| 
656
 | 
 0  | 
 0  | 
     int const acceleration = (level < -1) ? -level : 1;  | 
 
| 
657
 | 
 0  | 
 0  | 
     if (cdict) {  | 
 
| 
666
 | 
 0  | 
 13  | 
     int const acceleration = (level < -1) ? -level : 1;  | 
 
| 
673
 | 
 0  | 
 0  | 
     if (cdict) {  | 
 
| 
689
 | 
 1  | 
 0  | 
     if (level < LZ4HC_CLEVEL_MIN) {  | 
 
| 
690
 | 
 0  | 
 1  | 
         if (blockMode == LZ4F_blockIndependent) return LZ4F_compressBlock;  | 
 
| 
693
 | 
 0  | 
 0  | 
     if (blockMode == LZ4F_blockIndependent) return LZ4F_compressBlockHC;  | 
 
| 
699
 | 
 0  | 
 0  | 
     if (cctxPtr->prefs.compressionLevel < LZ4HC_CLEVEL_MIN)  | 
 
| 
728
 | 
 0  | 
 1  | 
     if (cctxPtr->cStage != 1) return err0r(LZ4F_ERROR_GENERIC);  | 
 
| 
729
 | 
 0  | 
 1  | 
     if (dstCapacity < LZ4F_compressBound_internal(srcSize, &(cctxPtr->prefs), cctxPtr->tmpInSize)) return err0r(LZ4F_ERROR_dstMaxSize_tooSmall);  | 
 
| 
731
 | 
 0  | 
 1  | 
     if (compressOptionsPtr == NULL) compressOptionsPtr = &cOptionsNull;  | 
 
| 
734
 | 
 0  | 
 1  | 
     if (cctxPtr->tmpInSize > 0) {   /* some data already within tmp buffer */  | 
 
| 
736
 | 
 0  | 
 0  | 
         if (sizeToCopy > srcSize) {  | 
 
| 
752
 | 
 0  | 
 0  | 
             if (cctxPtr->prefs.frameInfo.blockMode==LZ4F_blockLinked) cctxPtr->tmpIn += blockSize;  | 
 
| 
757
 | 
 12  | 
 1  | 
     while ((size_t)(srcEnd - srcPtr) >= blockSize) {  | 
 
| 
766
 | 
 1  | 
 0  | 
     if ((cctxPtr->prefs.autoFlush) && (srcPtr < srcEnd)) {  | 
 
| 
 | 
 1  | 
 0  | 
     if ((cctxPtr->prefs.autoFlush) && (srcPtr < srcEnd)) {  | 
 
| 
776
 | 
 1  | 
 0  | 
     if ((cctxPtr->prefs.frameInfo.blockMode==LZ4F_blockLinked) && (lastBlockCompressed==fromSrcBuffer)) {  | 
 
| 
 | 
 1  | 
 0  | 
     if ((cctxPtr->prefs.frameInfo.blockMode==LZ4F_blockLinked) && (lastBlockCompressed==fromSrcBuffer)) {  | 
 
| 
777
 | 
 1  | 
 0  | 
         if (compressOptionsPtr->stableSrc) {  | 
 
| 
781
 | 
 0  | 
 0  | 
             if (realDictSize==0) return err0r(LZ4F_ERROR_GENERIC);  | 
 
| 
787
 | 
 0  | 
 1  | 
     if ((cctxPtr->tmpIn + blockSize) > (cctxPtr->tmpBuff + cctxPtr->maxBufferSize)   /* necessarily LZ4F_blockLinked && lastBlockCompressed==fromTmpBuffer */  | 
 
| 
788
 | 
 0  | 
 0  | 
         && !(cctxPtr->prefs.autoFlush))  | 
 
| 
795
 | 
 0  | 
 1  | 
     if (srcPtr < srcEnd) {  | 
 
| 
802
 | 
 0  | 
 1  | 
     if (cctxPtr->prefs.frameInfo.contentChecksumFlag == LZ4F_contentChecksumEnabled)  | 
 
| 
824
 | 
 1  | 
 0  | 
     if (cctxPtr->tmpInSize == 0) return 0;   /* nothing to flush */  | 
 
| 
825
 | 
 0  | 
 0  | 
     if (cctxPtr->cStage != 1) return err0r(LZ4F_ERROR_GENERIC);  | 
 
| 
826
 | 
 0  | 
 0  | 
     if (dstCapacity < (cctxPtr->tmpInSize + 4)) return err0r(LZ4F_ERROR_dstMaxSize_tooSmall);   /* +4 : block header(4)  */  | 
 
| 
836
 | 
 0  | 
 0  | 
     if (cctxPtr->prefs.frameInfo.blockMode==LZ4F_blockLinked) cctxPtr->tmpIn += cctxPtr->tmpInSize;  | 
 
| 
840
 | 
 0  | 
 0  | 
     if ((cctxPtr->tmpIn + cctxPtr->maxBlockSize) > (cctxPtr->tmpBuff + cctxPtr->maxBufferSize)) {  /* necessarily LZ4F_blockLinked */  | 
 
| 
864
 | 
 0  | 
 1  | 
     if (LZ4F_isError(flushSize)) return flushSize;  | 
 
| 
870
 | 
 0  | 
 1  | 
     if (cctxPtr->prefs.frameInfo.contentChecksumFlag == LZ4F_contentChecksumEnabled) {  | 
 
| 
879
 | 
 1  | 
 0  | 
     if (cctxPtr->prefs.frameInfo.contentSize) {  | 
 
| 
880
 | 
 0  | 
 1  | 
         if (cctxPtr->prefs.frameInfo.contentSize != cctxPtr->totalInSize)  | 
 
| 
935
 | 
 0  | 
 8  | 
     if (dctx==NULL) return err0r(LZ4F_ERROR_GENERIC);  | 
 
| 
945
 | 
 8  | 
 0  | 
     if (dctx != NULL) {   /* can accept NULL input, like free() */  | 
 
| 
972
 | 
 0  | 
 8  | 
     if (srcSize < 5) return err0r(LZ4F_ERROR_frameHeader_incomplete);  | 
 
| 
975
 | 
 0  | 
 8  | 
     if ((LZ4F_readLE32(src) & 0xFFFFFFF0U) == LZ4F_MAGIC_SKIPPABLE_START) return 8;  | 
 
| 
978
 | 
 1  | 
 7  | 
     if (LZ4F_readLE32(src) != LZ4F_MAGICNUMBER)  | 
 
| 
1005
 | 
 0  | 
 7  | 
     if (srcSize < minFHSize) return err0r(LZ4F_ERROR_frameHeader_incomplete);   /* minimal frame header size */  | 
 
| 
1009
 | 
 0  | 
 7  | 
     if ((LZ4F_readLE32(srcPtr) & 0xFFFFFFF0U) == LZ4F_MAGIC_SKIPPABLE_START) {  | 
 
| 
1011
 | 
 0  | 
 0  | 
         if (src == (void*)(dctx->header)) {  | 
 
| 
1023
 | 
 0  | 
 7  | 
     if (LZ4F_readLE32(srcPtr) != LZ4F_MAGICNUMBER)  | 
 
| 
1036
 | 
 0  | 
 7  | 
         if (((FLG>>1)&_1BIT) != 0) return err0r(LZ4F_ERROR_reservedFlag_set); /* Reserved bit */  | 
 
| 
1037
 | 
 0  | 
 7  | 
         if (version != 1) return err0r(LZ4F_ERROR_headerVersion_wrong);        /* Version Number, only supported value */  | 
 
| 
1043
 | 
 0  | 
 7  | 
     if (srcSize < frameHeaderSize) {  | 
 
| 
1045
 | 
 0  | 
 0  | 
         if (srcPtr != dctx->header)  | 
 
| 
1056
 | 
 0  | 
 7  | 
         if (((BD>>7)&_1BIT) != 0) return err0r(LZ4F_ERROR_reservedFlag_set);   /* Reserved bit */  | 
 
| 
1057
 | 
 0  | 
 7  | 
         if (blockSizeID < 4) return err0r(LZ4F_ERROR_maxBlockSize_invalid);    /* 4-7 only supported values for the time being */  | 
 
| 
1058
 | 
 0  | 
 7  | 
         if (((BD>>0)&_4BITS) != 0) return err0r(LZ4F_ERROR_reservedFlag_set);  /* Reserved bits */  | 
 
| 
1063
 | 
 0  | 
 7  | 
         if (HC != srcPtr[frameHeaderSize-1])  | 
 
| 
1073
 | 
 4  | 
 3  | 
     if (contentSizeFlag)  | 
 
| 
1076
 | 
 0  | 
 7  | 
     if (dictIDFlag)  | 
 
| 
1103
 | 
 0  | 
 8  | 
     if (dctx->dStage > dstage_storeFrameHeader) {  /* assumption :  dstage_* header enum at beginning of range */  | 
 
| 
1111
 | 
 0  | 
 8  | 
         if (dctx->dStage == dstage_storeFrameHeader) {  | 
 
| 
1118
 | 
 1  | 
 7  | 
             if (LZ4F_isError(hSize)) { *srcSizePtr=0; return hSize; }  | 
 
| 
1119
 | 
 0  | 
 7  | 
             if (*srcSizePtr < hSize) {  | 
 
| 
1125
 | 
 0  | 
 7  | 
             if (LZ4F_isError(decodeResult)) {  | 
 
| 
1141
 | 
 3  | 
 36  | 
     if (dctx->dictSize==0)  | 
 
| 
1144
 | 
 39  | 
 0  | 
     if (dctx->dict + dctx->dictSize == dstPtr) {  /* dictionary continuity */  | 
 
| 
1149
 | 
 0  | 
 0  | 
     if (dstPtr - dstPtr0 + dstSize >= 64 KB) {  /* dstBuffer large enough to become dictionary */  | 
 
| 
1155
 | 
 0  | 
 0  | 
     if ((withinTmp) && (dctx->dict == dctx->tmpOutBuffer)) {  | 
 
| 
 | 
 0  | 
 0  | 
     if ((withinTmp) && (dctx->dict == dctx->tmpOutBuffer)) {  | 
 
| 
1161
 | 
 0  | 
 0  | 
     if (withinTmp) { /* copy relevant dict portion in front of tmpOut within tmpOutBuffer */  | 
 
| 
1165
 | 
 0  | 
 0  | 
         if (dctx->tmpOutSize > 64 KB) copySize = 0;  | 
 
| 
1166
 | 
 0  | 
 0  | 
         if (copySize > preserveSize) copySize = preserveSize;  | 
 
| 
1175
 | 
 0  | 
 0  | 
     if (dctx->dict == dctx->tmpOutBuffer) {    /* copy dst into tmp to complete dict */  | 
 
| 
1176
 | 
 0  | 
 0  | 
         if (dctx->dictSize + dstSize > dctx->maxBufferSize) {  /* tmp buffer not large enough */  | 
 
| 
1188
 | 
 0  | 
 0  | 
         if (preserveSize > dctx->dictSize) preserveSize = dctx->dictSize;  | 
 
| 
1234
 | 
 520  | 
 0  | 
     if (decompressOptionsPtr==NULL) decompressOptionsPtr = &optionsNull;  | 
 
| 
1240
 | 
 610  | 
 520  | 
     while (doAnotherStage) {  | 
 
| 
1246
 | 
 0  | 
 0  | 
             if ((size_t)(srcEnd-srcPtr) >= maxFHSize) {  /* enough to decode - shortcut */  | 
 
| 
1248
 | 
 0  | 
 0  | 
                 if (LZ4F_isError(hSize)) return hSize;  | 
 
| 
1253
 | 
 0  | 
 0  | 
             if (srcEnd-srcPtr == 0) return minFHSize;   /* 0-size input */  | 
 
| 
1264
 | 
 0  | 
 0  | 
             if (dctx->tmpInSize < dctx->tmpInTarget) {  | 
 
| 
1270
 | 
 0  | 
 0  | 
                 if (LZ4F_isError(hSize)) return hSize;  | 
 
| 
1275
 | 
 1  | 
 5  | 
             if (dctx->frameInfo.contentChecksumFlag) XXH32_reset(&(dctx->xxh), 0);  | 
 
| 
1278
 | 
 3  | 
 3  | 
                     + ((dctx->frameInfo.blockMode==LZ4F_blockLinked) * 128 KB);  | 
 
| 
1279
 | 
 6  | 
 0  | 
                 if (bufferNeeded > dctx->maxBufferSize) {   /* tmp buffers too small */  | 
 
| 
1283
 | 
 0  | 
 6  | 
                     if (dctx->tmpIn == NULL)  | 
 
| 
1287
 | 
 0  | 
 6  | 
                     if (dctx->tmpOutBuffer== NULL)  | 
 
| 
1301
 | 
 48  | 
 0  | 
             if ((size_t)(srcEnd - srcPtr) >= BHSize) {  | 
 
| 
1310
 | 
 0  | 
 48  | 
             if (dctx->dStage == dstage_storeBlockHeader)   /* can be skipped */  | 
 
| 
1319
 | 
 0  | 
 0  | 
                 if (dctx->tmpInSize < BHSize) {   /* not enough input for cBlockSize */  | 
 
| 
1330
 | 
 5  | 
 43  | 
                 if (nextCBlockSize==0) {  /* frameEnd signal, no more block */  | 
 
| 
1334
 | 
 0  | 
 43  | 
                 if (nextCBlockSize > dctx->maxBlockSize)  | 
 
| 
1336
 | 
 0  | 
 43  | 
                 if (LZ4F_readLE32(selectedIn) & LZ4F_BLOCKUNCOMPRESSED_FLAG) {  | 
 
| 
1339
 | 
 0  | 
 0  | 
                     if (dctx->frameInfo.blockChecksumFlag) {  | 
 
| 
1348
 | 
 1  | 
 42  | 
                 if (dstPtr==dstEnd) {  | 
 
| 
1359
 | 
 0  | 
 0  | 
                 if (dctx->frameInfo.blockChecksumFlag) {  | 
 
| 
1362
 | 
 0  | 
 0  | 
                 if (dctx->frameInfo.contentChecksumFlag)  | 
 
| 
1364
 | 
 0  | 
 0  | 
                 if (dctx->frameInfo.contentSize)  | 
 
| 
1368
 | 
 0  | 
 0  | 
                 if (dctx->frameInfo.blockMode == LZ4F_blockLinked)  | 
 
| 
1373
 | 
 0  | 
 0  | 
                 if (sizeToCopy == dctx->tmpInTarget) {   /* all done */  | 
 
| 
1374
 | 
 0  | 
 0  | 
                     if (dctx->frameInfo.blockChecksumFlag) {  | 
 
| 
1392
 | 
 0  | 
 0  | 
                 if ((srcEnd-srcPtr >= 4) && (dctx->tmpInSize==0)) {  | 
 
| 
 | 
 0  | 
 0  | 
                 if ((srcEnd-srcPtr >= 4) && (dctx->tmpInSize==0)) {  | 
 
| 
1401
 | 
 0  | 
 0  | 
                     if (dctx->tmpInSize < 4) {  /* all input consumed */  | 
 
| 
1409
 | 
 0  | 
 0  | 
                     if (readCRC != calcCRC)  | 
 
| 
1417
 | 
 1  | 
 42  | 
             if ((size_t)(srcEnd-srcPtr) < dctx->tmpInTarget) {  | 
 
| 
1434
 | 
 1  | 
 0  | 
                 if (dctx->tmpInSize < dctx->tmpInTarget) { /* need more input */  | 
 
| 
1443
 | 
 0  | 
 42  | 
             if (dctx->frameInfo.blockChecksumFlag) {  | 
 
| 
1448
 | 
 0  | 
 0  | 
                     if (readBlockCrc != calcBlockCrc)  | 
 
| 
1452
 | 
 37  | 
 5  | 
             if ((size_t)(dstEnd-dstPtr) >= dctx->maxBlockSize) {  | 
 
| 
1458
 | 
 0  | 
 37  | 
                 if (decodedSize < 0) return err0r(LZ4F_ERROR_GENERIC);   /* decompression failed */  | 
 
| 
1459
 | 
 0  | 
 37  | 
                 if (dctx->frameInfo.contentChecksumFlag)  | 
 
| 
1461
 | 
 36  | 
 1  | 
                 if (dctx->frameInfo.contentSize)  | 
 
| 
1465
 | 
 36  | 
 1  | 
                 if (dctx->frameInfo.blockMode==LZ4F_blockLinked)  | 
 
| 
1475
 | 
 3  | 
 2  | 
             if (dctx->frameInfo.blockMode == LZ4F_blockLinked) {  | 
 
| 
1476
 | 
 0  | 
 3  | 
                 if (dctx->dict == dctx->tmpOutBuffer) {  | 
 
| 
1477
 | 
 0  | 
 0  | 
                     if (dctx->dictSize > 128 KB) {  | 
 
| 
1493
 | 
 0  | 
 5  | 
                 if (decodedSize < 0)  /* decompression failed */  | 
 
| 
1495
 | 
 1  | 
 4  | 
                 if (dctx->frameInfo.contentChecksumFlag)  | 
 
| 
1497
 | 
 3  | 
 2  | 
                 if (dctx->frameInfo.contentSize)  | 
 
| 
1510
 | 
 3  | 
 515  | 
                 if (dctx->frameInfo.blockMode==LZ4F_blockLinked)  | 
 
| 
1516
 | 
 5  | 
 513  | 
                 if (dctx->tmpOutStart == dctx->tmpOutSize) { /* all flushed */  | 
 
| 
1526
 | 
 0  | 
 5  | 
             if (dctx->frameRemainingSize)  | 
 
| 
1528
 | 
 4  | 
 1  | 
             if (!dctx->frameInfo.contentChecksumFlag) {  /* no checksum, frame is completed */  | 
 
| 
1534
 | 
 0  | 
 1  | 
             if ((srcEnd - srcPtr) < 4) {  /* not enough size for entire CRC */  | 
 
| 
1542
 | 
 0  | 
 1  | 
             if (dctx->dStage == dstage_storeSuffix)   /* can be skipped */  | 
 
| 
1550
 | 
 0  | 
 0  | 
                 if (dctx->tmpInSize < 4) { /* not enough input to read complete suffix */  | 
 
| 
1561
 | 
 0  | 
 1  | 
                 if (readCRC != resultCRC)  | 
 
| 
1570
 | 
 0  | 
 0  | 
             if ((srcEnd - srcPtr) >= 4) {  | 
 
| 
1580
 | 
 0  | 
 0  | 
             if (dctx->dStage == dstage_storeSFrameSize)  | 
 
| 
1588
 | 
 0  | 
 0  | 
                 if (dctx->tmpInSize < dctx->tmpInTarget) {  | 
 
| 
1611
 | 
 0  | 
 0  | 
                 if (nextSrcSizeHint) break;  /* still more to skip */  | 
 
| 
1621
 | 
 3  | 
 517  | 
     if ( (dctx->frameInfo.blockMode==LZ4F_blockLinked)  /* next block will use up to 64KB from previous ones */  | 
 
| 
1622
 | 
 3  | 
 0  | 
       && (dctx->dict != dctx->tmpOutBuffer)             /* dictionary is not already within tmp */  | 
 
| 
1623
 | 
 3  | 
 0  | 
       && (!decompressOptionsPtr->stableDst)             /* cannot rely on dst data to remain there for next call */  | 
 
| 
1624
 | 
 0  | 
 3  | 
       && ((unsigned)(dctx->dStage)-2 < (unsigned)(dstage_getSuffix)-2) )  /* valid stages : [init ... getSuffix[ */  | 
 
| 
1626
 | 
 0  | 
 0  | 
         if (dctx->dStage == dstage_flushOut) {  | 
 
| 
1630
 | 
 0  | 
 0  | 
             if (dctx->tmpOutSize > 64 KB) copySize = 0;  | 
 
| 
1631
 | 
 0  | 
 0  | 
             if (copySize > preserveSize) copySize = preserveSize;  | 
 
| 
1633
 | 
 0  | 
 0  | 
             if (copySize > 0)  | 
 
| 
1642
 | 
 0  | 
 0  | 
             if (newDictSize > 0)  | 
 
| 
1667
 | 
 0  | 
 0  | 
     if (dctx->dStage <= dstage_init) {  |