]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
fixed tautological tests
authorYann Collet <cyan@fb.com>
Fri, 21 Sep 2018 22:04:43 +0000 (15:04 -0700)
committerYann Collet <cyan@fb.com>
Fri, 21 Sep 2018 22:04:43 +0000 (15:04 -0700)
involving ZSTD_TARGETLENGTH_MIN (== 0)

lib/compress/zstd_compress.c
lib/zstd.h
programs/windres/zstd32.res
programs/windres/zstd64.res

index 2862a6bd8aed981245d6500ca1cb298abf746888..98e9917abe1fb6f57326759e2901e68d5b698c6b 100644 (file)
@@ -679,7 +679,9 @@ size_t ZSTD_checkCParams(ZSTD_compressionParameters cParams)
     CLAMPCHECK(cParams.hashLog, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX);
     CLAMPCHECK(cParams.searchLog, ZSTD_SEARCHLOG_MIN, ZSTD_SEARCHLOG_MAX);
     CLAMPCHECK(cParams.searchLength, ZSTD_SEARCHLENGTH_MIN, ZSTD_SEARCHLENGTH_MAX);
-    CLAMPCHECK(cParams.targetLength, ZSTD_TARGETLENGTH_MIN, ZSTD_TARGETLENGTH_MAX);
+    ZSTD_STATIC_ASSERT(ZSTD_TARGETLENGTH_MIN == 0);
+    if (cParams.targetLength > ZSTD_TARGETLENGTH_MAX)
+        return ERROR(parameter_outOfBound);
     if ((U32)(cParams.strategy) > (U32)ZSTD_btultra)
         return ERROR(parameter_unsupported);
     return 0;
@@ -700,7 +702,9 @@ ZSTD_clampCParams(ZSTD_compressionParameters cParams)
     CLAMP(cParams.hashLog, ZSTD_HASHLOG_MIN, ZSTD_HASHLOG_MAX);
     CLAMP(cParams.searchLog, ZSTD_SEARCHLOG_MIN, ZSTD_SEARCHLOG_MAX);
     CLAMP(cParams.searchLength, ZSTD_SEARCHLENGTH_MIN, ZSTD_SEARCHLENGTH_MAX);
-    CLAMP(cParams.targetLength, ZSTD_TARGETLENGTH_MIN, ZSTD_TARGETLENGTH_MAX);
+    ZSTD_STATIC_ASSERT(ZSTD_TARGETLENGTH_MIN == 0);
+    if (cParams.targetLength > ZSTD_TARGETLENGTH_MAX)
+        cParams.targetLength = ZSTD_TARGETLENGTH_MAX;
     CLAMP(cParams.strategy, ZSTD_fast, ZSTD_btultra);
     return cParams;
 }
index 60260d2bd98ed1565e46910b121f80a77d3ac3d6..8a39de59a3751ea148200c0faf1e17262c4f0fc3 100644 (file)
@@ -424,7 +424,7 @@ ZSTDLIB_API int ZSTD_minCLevel(void);  /*!< minimum negative compression level a
 #define ZSTD_SEARCHLENGTH_MAX    7   /* only for ZSTD_fast, other strategies are limited to 6 */
 #define ZSTD_SEARCHLENGTH_MIN    3   /* only for ZSTD_btopt, other strategies are limited to 4 */
 #define ZSTD_TARGETLENGTH_MAX  ZSTD_BLOCKSIZE_MAX
-#define ZSTD_TARGETLENGTH_MIN    0
+#define ZSTD_TARGETLENGTH_MIN    0   /* note : comparing this constant to an unsigned results in a tautological test */
 #define ZSTD_LDM_MINMATCH_MAX 4096
 #define ZSTD_LDM_MINMATCH_MIN    4
 #define ZSTD_LDM_BUCKETSIZELOG_MAX 8
index 26800ab321c2fc6b0a0d57a28e2710f71c8732c7..276cb20b7871cc800fb8f6f7b792520c5e6e7957 100644 (file)
Binary files a/programs/windres/zstd32.res and b/programs/windres/zstd32.res differ
index 723d73a612e0df1bf8aa2a66541a4ad2ea5696f0..3eb0162f01a76591ac25bd5049ebc06d1cd510aa 100644 (file)
Binary files a/programs/windres/zstd64.res and b/programs/windres/zstd64.res differ