]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
Added test for multiple blocks of zeros and fixed nit about comments
authorbimbashrestha <bshrestha.msae@gmail.com>
Wed, 28 Aug 2019 15:32:34 +0000 (08:32 -0700)
committerbimbashrestha <bshrestha.msae@gmail.com>
Wed, 28 Aug 2019 15:32:34 +0000 (08:32 -0700)
lib/compress/zstd_compress.c
tests/fuzzer.c

index f8a2919e2fd574a2840584da294eb5ab89b0c766..62cab4ed52e8524ad8c9dc93a0551410f4aeaf73 100644 (file)
@@ -2283,7 +2283,7 @@ static size_t ZSTD_compressBlock_internal(ZSTD_CCtx* zc,
     /* This the upper bound for the length of an rle block.
      * This isn't the actual upper bound. Finding the real threshold
      * needs further investigation.
-    */
+     */
     const U32 rleMaxLength = 25;
     size_t cSize;
     const BYTE* ip = (const BYTE*)src;
@@ -2310,7 +2310,7 @@ static size_t ZSTD_compressBlock_internal(ZSTD_CCtx* zc,
         /* We don't want to emit our first block as a RLE even if it qualifies because
          * doing so will cause the decoder to throw a "should consume all input error."
          * https://github.com/facebook/zstd/blob/dev/programs/fileio.c#L1723
-        */
+         */
         !zc->isFirstBlock &&
         cSize < rleMaxLength &&
         ZSTD_isRLE(ip, srcSize))
index 2de7c0096ff975513520c646648dcc80c06cb0d9..c256389a59b64ee38419b9aade5e93ae00dc67b9 100644 (file)
@@ -1960,6 +1960,19 @@ static int basicUnitTests(U32 const seed, double compressibility)
         DISPLAYLEVEL(3, "OK \n");
     }
 
+    /* Multiple blocks of zeros test */
+    #define LONGZEROSLENGTH 1000000 /* 1MB of zeros */
+    DISPLAYLEVEL(3, "test%3i : compress %u zeroes : ", testNb++, LONGZEROSLENGTH);
+    memset(CNBuffer, 0, LONGZEROSLENGTH);
+    CHECK_VAR(cSize, ZSTD_compress(compressedBuffer, ZSTD_compressBound(LONGZEROSLENGTH), CNBuffer, LONGZEROSLENGTH, 1) );
+    DISPLAYLEVEL(3, "OK (%u bytes : %.2f%%)\n", (unsigned)cSize, (double)cSize/LONGZEROSLENGTH*100);
+
+    DISPLAYLEVEL(3, "test%3i : decompress %u zeroes : ", testNb++, LONGZEROSLENGTH);
+    { CHECK_NEWV(r, ZSTD_decompress(decodedBuffer, LONGZEROSLENGTH, compressedBuffer, cSize) );
+      if (r != LONGZEROSLENGTH) goto _output_error; }
+    DISPLAYLEVEL(3, "OK \n");
+
+
     /* All zeroes test (test bug #137) */
     #define ZEROESLENGTH 100
     DISPLAYLEVEL(3, "test%3i : compress %u zeroes : ", testNb++, ZEROESLENGTH);