summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lz4frame.h10
-rw-r--r--programs/frametest.c9
2 files changed, 15 insertions, 4 deletions
diff --git a/lz4frame.h b/lz4frame.h
index 039ab14..a8f8544 100644
--- a/lz4frame.h
+++ b/lz4frame.h
@@ -44,6 +44,10 @@
extern "C" {
#endif
+/****************************************
+ Note : experimental API.
+ Not yet integrated within lz4 library.
+****************************************/
/**************************************
Includes
@@ -58,9 +62,9 @@ typedef size_t LZ4F_errorCode_t;
typedef enum { OK_FrameEnd = 1 } LZ4F_successCodes;
typedef enum { OK_NoError = 0, ERROR_GENERIC = 1,
ERROR_maxBlockSize_invalid, ERROR_blockMode_invalid, ERROR_contentChecksumFlag_invalid,
- ERROR_srcSize_tooLarge, ERROR_dstMaxSize_tooSmall,
- ERROR_allocation_failed,
ERROR_compressionLevel_invalid,
+ ERROR_allocation_failed,
+ ERROR_srcSize_tooLarge, ERROR_dstMaxSize_tooSmall,
ERROR_checksum_invalid,
ERROR_maxCode
} LZ4F_errorCodes; /* error codes are negative unsigned values.
@@ -80,7 +84,7 @@ typedef enum { noContentChecksum=0, contentChecksumEnabled } contentChecksum_t;
typedef struct {
blockSizeID_t blockSizeID; /* max64KB, max256KB, max1MB, max4MB ; 0 == default */
blockMode_t blockMode; /* blockLinked, blockIndependent ; 0 == default */
- contentChecksum_t contentChecksumFlag; /* contentChecksumEnabled (default), noContentChecksum ; */
+ contentChecksum_t contentChecksumFlag; /* noContentChecksum, contentChecksumEnabled ; 0 == default */
unsigned reserved[3];
} LZ4F_frameInfo_t;
diff --git a/programs/frametest.c b/programs/frametest.c
index efe1883..2c45f85 100644
--- a/programs/frametest.c
+++ b/programs/frametest.c
@@ -356,7 +356,7 @@ _output_error:
}
-static const U32 srcDataLength = 4 MB;
+static const U32 srcDataLength = 9 MB; /* needs to be > 2x4MB to test large blocks */
int fuzzerTests(U32 seed, unsigned nbTests, unsigned startTest, double compressibility)
{
@@ -419,11 +419,18 @@ int fuzzerTests(U32 seed, unsigned nbTests, unsigned startTest, double compressi
unsigned nbBitsSeg = FUZ_rand(&randState) % maxBits;
size_t iSize = (FUZ_rand(&randState) & ((1<<nbBitsSeg)-1)) + 1;
size_t oSize = oend-op;
+ unsigned forceFlush = ((FUZ_rand(&randState) & 3) == 1);
if (iSize > (size_t)(iend-ip)) iSize = iend-ip;
result = LZ4F_compress(cCtx, op, oSize, ip, iSize, NULL);
CHECK(LZ4F_isError(result), "Compression failed (error %i)", (int)result);
op += result;
ip += iSize;
+ if (forceFlush)
+ {
+ result = LZ4F_flush(cCtx, op, oend-op, NULL);
+ CHECK(LZ4F_isError(result), "Compression failed (error %i)", (int)result);
+ op += result;
+ }
}
result = LZ4F_compressEnd(cCtx, op, oend-op, NULL);
CHECK(LZ4F_isError(result), "Compression completion failed (error %i)", (int)result);