From df4e9bba250e8e506594c8af277b7bc4775168ad Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Tue, 26 Sep 2017 14:31:06 -0700 Subject: [PATCH] fixed constant errors for gcc in c99 mode C standard does not consider a `static const int` as a constant. This is a problem for initializer, and ZSTD_STATIC_ASSERT(). Replaced by macro values --- lib/common/zstd_internal.h | 3 ++- lib/decompress/zstd_decompress.c | 2 +- lib/zstd.h | 9 +++++---- tests/fuzzer.c | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/common/zstd_internal.h b/lib/common/zstd_internal.h index 0e34dc4c8..614bd1eab 100644 --- a/lib/common/zstd_internal.h +++ b/lib/common/zstd_internal.h @@ -105,7 +105,8 @@ static const U32 repStartValue[ZSTD_REP_NUM] = { 1, 4, 8 }; static const size_t ZSTD_fcs_fieldSize[4] = { 0, 2, 4, 8 }; static const size_t ZSTD_did_fieldSize[4] = { 0, 1, 2, 4 }; -static const size_t ZSTD_frameIdSize = 4; /* magic number */ +#define ZSTD_FRAMEIDSIZE 4 +static const size_t ZSTD_frameIdSize = ZSTD_FRAMEIDSIZE; /* magic number size */ #define ZSTD_BLOCKHEADERSIZE 3 /* C standard doesn't allow `static const` variable to be init using another `static const` variable */ static const size_t ZSTD_blockHeaderSize = ZSTD_BLOCKHEADERSIZE; diff --git a/lib/decompress/zstd_decompress.c b/lib/decompress/zstd_decompress.c index 7b26a7339..ffb54275e 100644 --- a/lib/decompress/zstd_decompress.c +++ b/lib/decompress/zstd_decompress.c @@ -278,7 +278,7 @@ static size_t ZSTD_frameHeaderSize_internal(const void* src, size_t srcSize, ZST size_t const minInputSize = (format==ZSTD_f_zstd1_magicless) ? ZSTD_frameHeaderSize_prefix - ZSTD_frameIdSize : ZSTD_frameHeaderSize_prefix; - ZSTD_STATIC_ASSERT(ZSTD_frameHeaderSize_prefix >= ZSTD_frameIdSize); + ZSTD_STATIC_ASSERT(ZSTD_FRAMEHEADERSIZE_PREFIX >= ZSTD_FRAMEIDSIZE); ZSTD_STATIC_ASSERT((unsigned)ZSTD_f_zstd1 < (unsigned)ZSTD_f_zstd1_magicless); assert((unsigned)format <= ZSTD_f_zstd1_magicless); /* only supports formats ZSTD_f_zstd1 and ZSTD_f_zstd1_magicless */ if (srcSize < minInputSize) return ERROR(srcSize_wrong); diff --git a/lib/zstd.h b/lib/zstd.h index ca60088c8..3ec9af592 100644 --- a/lib/zstd.h +++ b/lib/zstd.h @@ -395,11 +395,12 @@ ZSTDLIB_API size_t ZSTD_DStreamOutSize(void); /*!< recommended size for output #define ZSTD_LDM_MINMATCH_MAX 4096 #define ZSTD_LDM_BUCKETSIZELOG_MAX 8 -#define ZSTD_FRAMEHEADERSIZE_MAX 18 /* for static allocation */ -#define ZSTD_FRAMEHEADERSIZE_MIN 6 -static const size_t ZSTD_frameHeaderSize_prefix = 5; /* minimum input size to know frame header size */ -static const size_t ZSTD_frameHeaderSize_max = ZSTD_FRAMEHEADERSIZE_MAX; +#define ZSTD_FRAMEHEADERSIZE_PREFIX 5 /* minimum input size to know frame header size */ +#define ZSTD_FRAMEHEADERSIZE_MIN 6 +#define ZSTD_FRAMEHEADERSIZE_MAX 18 /* for static allocation */ +static const size_t ZSTD_frameHeaderSize_prefix = ZSTD_FRAMEHEADERSIZE_PREFIX; static const size_t ZSTD_frameHeaderSize_min = ZSTD_FRAMEHEADERSIZE_MIN; +static const size_t ZSTD_frameHeaderSize_max = ZSTD_FRAMEHEADERSIZE_MAX; static const size_t ZSTD_skippableHeaderSize = 8; /* magic number + skippable frame length */ diff --git a/tests/fuzzer.c b/tests/fuzzer.c index a341b5988..e77aab363 100644 --- a/tests/fuzzer.c +++ b/tests/fuzzer.c @@ -920,7 +920,7 @@ static int basicUnitTests(U32 seed, double compressibility) /* custom formats tests */ { ZSTD_CCtx* const cctx = ZSTD_createCCtx(); - static const size_t inputSize = CNBuffSize / 2; /* won't cause pb with small dict size */ + size_t const inputSize = CNBuffSize / 2; /* won't cause pb with small dict size */ /* basic block compression */ DISPLAYLEVEL(4, "test%3i : magic-less format test : ", testNb++); -- 2.47.2