From f7da96ff20a3badd075d083c04169727d5621c4c Mon Sep 17 00:00:00 2001
From: Dominik Loidolt <dominik.loidolt@univie.ac.at>
Date: Sat, 26 Oct 2024 06:38:21 +0200
Subject: [PATCH] Refactor: Add missing header includes, clean up type casts,
 improve test robustness

---
 examples/example_compress_chunk.c     |  4 +--
 lib/cmp_chunk.h                       |  3 +++
 lib/cmp_icu.h                         |  2 ++
 lib/common/cmp_data_types.c           | 36 +++++++++++++++------------
 lib/common/cmp_data_types.h           |  1 +
 lib/common/cmp_debug.c                |  5 ++--
 lib/common/cmp_debug.h                |  6 ++---
 lib/common/cmp_entity.c               |  5 ++--
 lib/common/cmp_error.h                |  1 -
 lib/common/cmp_support.c              |  7 ++++--
 lib/common/cmp_support.h              |  3 ---
 lib/common/compiler.h                 |  2 +-
 lib/common/vsnprintf.h                |  3 +++
 lib/decmp.h                           |  2 ++
 lib/decompress/decmp.c                |  4 ++-
 lib/icu_compress/cmp_icu.c            |  4 +++
 lib/rdcu_compress/cmp_rdcu.c          |  1 +
 lib/rdcu_compress/cmp_rdcu_cfg.c      |  1 +
 lib/rdcu_compress/cmp_rdcu_cfg.h      |  2 ++
 lib/rdcu_compress/cmp_rdcu_testing.h  |  2 ++
 lib/rdcu_compress/rdcu_cmd.c          |  1 +
 lib/rdcu_compress/rdcu_ctrl.c         |  1 -
 lib/rdcu_compress/rdcu_rmap.c         |  1 +
 lib/rdcu_compress/rmap.c              |  2 +-
 programs/cmp_guess.c                  |  4 +--
 programs/cmp_tool.c                   |  3 +--
 test/bench/benchfn.c                  |  2 +-
 test/cmp_decmp/test_cmp_decmp.c       | 12 ++++++---
 test/cmp_icu/test_cmp_icu.c           |  3 ++-
 test/cmp_rdcu_cfg/test_cmp_rdcu_cfg.c |  2 ++
 test/decmp/test_decmp.c               | 10 ++++----
 31 files changed, 85 insertions(+), 50 deletions(-)

diff --git a/examples/example_compress_chunk.c b/examples/example_compress_chunk.c
index 900eb01..4ca542e 100644
--- a/examples/example_compress_chunk.c
+++ b/examples/example_compress_chunk.c
@@ -149,7 +149,7 @@ static int demo_comperss_chunk_1d(void)
 	{	/* have a look at the compressed data */
 		uint32_t i;
 
-		printf("Here's the compressed data including the compression entity header (size %d):\n", cmp_size_bytes);
+		printf("Here's the compressed data including the compression entity header (size %u):\n", cmp_size_bytes);
 		for (i = 0; i < cmp_size_bytes; i++) {
 			const uint8_t *p = (uint8_t *)compressed_data; /* the compression entity is big-endian */
 			printf("%02X ", p[i]);
@@ -270,7 +270,7 @@ static int demo_comperss_chunk_model(void)
 	{	/* have a look at the compressed data */
 		uint32_t i;
 
-		printf("Here's the compressed data including the compression entity header (size %d):\n", cmp_size_bytes);
+		printf("Here's the compressed data including the compression entity header (size %u):\n", cmp_size_bytes);
 		for (i = 0; i < cmp_size_bytes; i++) {
 			const uint8_t *p = (uint8_t *)compressed_data; /* the compression entity is big-endian */
 			printf("%02X ", p[i]);
diff --git a/lib/cmp_chunk.h b/lib/cmp_chunk.h
index 2300483..8e1c2c1 100644
--- a/lib/cmp_chunk.h
+++ b/lib/cmp_chunk.h
@@ -20,6 +20,9 @@
 #ifndef CMP_CHUNK_H
 #define CMP_CHUNK_H
 
+#include <stddef.h>
+#include <stdint.h>
+
 #include "common/cmp_support.h"
 #include "common/cmp_entity.h"
 #include "common/cmp_error_list.h"
diff --git a/lib/cmp_icu.h b/lib/cmp_icu.h
index 4df2cff..34dad7b 100644
--- a/lib/cmp_icu.h
+++ b/lib/cmp_icu.h
@@ -20,6 +20,8 @@
 #ifndef CMP_ICU_H
 #define CMP_ICU_H
 
+#include <stdint.h>
+
 #include "common/cmp_support.h"
 
 uint32_t compress_like_rdcu(const struct rdcu_cfg *rcfg, struct cmp_info *info);
diff --git a/lib/common/cmp_data_types.c b/lib/common/cmp_data_types.c
index 778195f..7a4f78f 100644
--- a/lib/common/cmp_data_types.c
+++ b/lib/common/cmp_data_types.c
@@ -17,9 +17,11 @@
  */
 
 
+#include <stddef.h>
 #include <stdint.h>
 #include <limits.h>
 
+#include "compiler.h"
 #include "byteorder.h"
 #include "cmp_debug.h"
 #include "cmp_support.h"
@@ -504,6 +506,7 @@ uint8_t convert_cmp_data_type_to_subservice(enum cmp_data_type data_type)
 		break;
 	default:
 	case DATA_TYPE_UNKNOWN:
+	case DATA_TYPE_CHUNK:
 		debug_print("Error: Unknown compression data type!");
 		sst = (uint8_t)-1;
 	};
@@ -581,6 +584,7 @@ size_t size_of_a_sample(enum cmp_data_type data_type)
 	case DATA_TYPE_F_FX_EFX_NCOB_ECOB:
 		sample_size = sizeof(struct f_fx_efx_ncob_ecob);
 		break;
+	case DATA_TYPE_CHUNK:
 	case DATA_TYPE_UNKNOWN:
 	default:
 		debug_print("Error: Compression data type is not supported.");
@@ -604,7 +608,7 @@ static void be_to_cpus_16(uint16_t *a, uint32_t samples)
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		uint16_t tmp;
 
 		tmp = be16_to_cpu(get_unaligned(&a[i]));
@@ -617,7 +621,7 @@ static void be_to_cpus_offset(struct offset *a, uint32_t samples)
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		a[i].mean = be32_to_cpu(a[i].mean);
 		a[i].variance = be32_to_cpu(a[i].variance);
 	}
@@ -628,7 +632,7 @@ static void be_to_cpus_background(struct background *a, uint32_t samples)
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		a[i].mean = be32_to_cpu(a[i].mean);
 		a[i].variance = be32_to_cpu(a[i].variance);
 		a[i].outlier_pixels = be16_to_cpu(a[i].outlier_pixels);
@@ -640,7 +644,7 @@ static void be_to_cpus_smearing(struct smearing *a, uint32_t samples)
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		a[i].mean = be32_to_cpu(a[i].mean);
 		a[i].variance_mean = be16_to_cpu(a[i].variance_mean);
 		a[i].outlier_pixels = be16_to_cpu(a[i].outlier_pixels);
@@ -652,7 +656,7 @@ static void be_to_cpus_s_fx(struct s_fx *a, uint32_t samples)
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i)
+	for (i = 0; i < samples; i++)
 		a[i].fx = be32_to_cpu(a[i].fx);
 }
 
@@ -661,7 +665,7 @@ static void be_to_cpus_s_fx_efx(struct s_fx_efx *a, uint32_t samples)
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		a[i].fx = be32_to_cpu(a[i].fx);
 		a[i].efx = be32_to_cpu(a[i].efx);
 	}
@@ -672,7 +676,7 @@ static void be_to_cpus_s_fx_ncob(struct s_fx_ncob *a, uint32_t samples)
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		a[i].fx = be32_to_cpu(a[i].fx);
 		a[i].ncob_x = be32_to_cpu(a[i].ncob_x);
 		a[i].ncob_y = be32_to_cpu(a[i].ncob_y);
@@ -684,7 +688,7 @@ static void be_to_cpus_s_fx_efx_ncob_ecob(struct s_fx_efx_ncob_ecob *a, uint32_t
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		a[i].fx = be32_to_cpu(a[i].fx);
 		a[i].ncob_x = be32_to_cpu(a[i].ncob_x);
 		a[i].ncob_y = be32_to_cpu(a[i].ncob_y);
@@ -699,7 +703,7 @@ static void be_to_cpus_l_fx(struct l_fx *a, uint32_t samples)
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		a[i].exp_flags = be24_to_cpu(a[i].exp_flags);
 		a[i].fx = be32_to_cpu(a[i].fx);
 		a[i].fx_variance = be32_to_cpu(a[i].fx_variance);
@@ -711,7 +715,7 @@ static void be_to_cpus_l_fx_efx(struct l_fx_efx *a, uint32_t samples)
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		a[i].exp_flags = be24_to_cpu(a[i].exp_flags);
 		a[i].fx = be32_to_cpu(a[i].fx);
 		a[i].efx = be32_to_cpu(a[i].efx);
@@ -724,7 +728,7 @@ static void be_to_cpus_l_fx_ncob(struct l_fx_ncob *a, uint32_t samples)
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		a[i].exp_flags = be24_to_cpu(a[i].exp_flags);
 		a[i].fx = be32_to_cpu(a[i].fx);
 		a[i].ncob_x = be32_to_cpu(a[i].ncob_x);
@@ -740,7 +744,7 @@ static void be_to_cpus_l_fx_efx_ncob_ecob(struct l_fx_efx_ncob_ecob *a, uint32_t
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		a[i].exp_flags = be24_to_cpu(a[i].exp_flags);
 		a[i].fx = be32_to_cpu(a[i].fx);
 		a[i].ncob_x = be32_to_cpu(a[i].ncob_x);
@@ -759,7 +763,7 @@ static void be_to_cpus_f_fx(struct f_fx *a, uint32_t samples)
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i)
+	for (i = 0; i < samples; i++)
 		a[i].fx = be32_to_cpu(a[i].fx);
 }
 
@@ -768,7 +772,7 @@ static void be_to_cpus_f_fx_efx(struct f_fx_efx *a, uint32_t samples)
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		a[i].fx = be32_to_cpu(a[i].fx);
 		a[i].efx = be32_to_cpu(a[i].efx);
 	}
@@ -779,7 +783,7 @@ static void be_to_cpus_f_fx_ncob(struct f_fx_ncob *a, uint32_t samples)
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		a[i].fx = be32_to_cpu(a[i].fx);
 		a[i].ncob_x = be32_to_cpu(a[i].ncob_x);
 		a[i].ncob_y = be32_to_cpu(a[i].ncob_y);
@@ -791,7 +795,7 @@ static void be_to_cpus_f_fx_efx_ncob_ecob(struct f_fx_efx_ncob_ecob *a, uint32_t
 {
 	uint32_t i;
 
-	for (i = 0; i < samples; ++i) {
+	for (i = 0; i < samples; i++) {
 		a[i].fx = be32_to_cpu(a[i].fx);
 		a[i].ncob_x = be32_to_cpu(a[i].ncob_x);
 		a[i].ncob_y = be32_to_cpu(a[i].ncob_y);
diff --git a/lib/common/cmp_data_types.h b/lib/common/cmp_data_types.h
index e63fc84..9559dd1 100644
--- a/lib/common/cmp_data_types.h
+++ b/lib/common/cmp_data_types.h
@@ -34,6 +34,7 @@
 #ifndef CMP_DATA_TYPE_H
 #define CMP_DATA_TYPE_H
 
+#include <stddef.h>
 #include <stdint.h>
 
 #include "compiler.h"
diff --git a/lib/common/cmp_debug.c b/lib/common/cmp_debug.c
index 08486ab..db6749c 100644
--- a/lib/common/cmp_debug.c
+++ b/lib/common/cmp_debug.c
@@ -21,6 +21,7 @@
 #ifndef ICU_ASW
 #  include <stdio.h>
 #endif
+#include <stddef.h>
 #include <string.h>
 #include <stdarg.h>
 
@@ -44,8 +45,8 @@ static void cmp_debug_puts(const char *str)
 	/* asw_puts(str); */
 	(void)str;
 #else
-	fputs(str, stderr);
-	fputs("\n", stderr);
+	(void)fputs(str, stderr);
+	(void)fputs("\n", stderr);
 #endif
 }
 
diff --git a/lib/common/cmp_debug.h b/lib/common/cmp_debug.h
index 1261289..281ff53 100644
--- a/lib/common/cmp_debug.h
+++ b/lib/common/cmp_debug.h
@@ -33,21 +33,21 @@
 
 #define PRINT_BUFFER_SIZE 256
 
-__extension__
 #if (DEBUGLEVEL > 0)
+__extension__
 #  define debug_print(...) cmp_debug_print_impl(__VA_ARGS__)
 void cmp_debug_print_impl(const char *fmt, ...);
 #else
+__extension__
 #  define debug_print(...) do {} while (0)
 #endif
 
 __extension__
 #define debug_print_level(level, ...)			\
 	do {						\
-		if (level <= DEBUGLEVEL)		\
+		if ((level) <= DEBUGLEVEL)		\
 			debug_print(__VA_ARGS__);	\
 	} while (0)
 
 
-
 #endif /* CMP_DEBUG_H */
diff --git a/lib/common/cmp_entity.c b/lib/common/cmp_entity.c
index b0644ba..3813d1c 100644
--- a/lib/common/cmp_entity.c
+++ b/lib/common/cmp_entity.c
@@ -32,10 +32,10 @@
 #  endif
 #endif
 
+#include "compiler.h"
 #include "byteorder.h"
 #include "cmp_debug.h"
 #include "cmp_support.h"
-#include "cmp_data_types.h"
 #include "cmp_entity.h"
 #include "leon_inttypes.h"
 
@@ -1971,7 +1971,7 @@ uint64_t cmp_ent_create_timestamp(const struct timespec *ts)
 		}
 		now = *ts;
 	} else {
-		clock_gettime(CLOCK_REALTIME, &now);
+		(void)clock_gettime(CLOCK_REALTIME, &now);
 	}
 
 	seconds = ((double)now.tv_sec + 1.0e-9 * (double)now.tv_nsec) -
@@ -2255,6 +2255,7 @@ static void cmp_ent_parese_specific_header(const struct cmp_entity *ent)
 	case DATA_TYPE_CHUNK:
 		cmp_ent_parese_non_imagette_header(ent);
 		break;
+	case DATA_TYPE_UNKNOWN:
 	default:
 		debug_print("For this data product type no parse functions is implemented!");
 		break;
diff --git a/lib/common/cmp_error.h b/lib/common/cmp_error.h
index 333bbc9..64cb59e 100644
--- a/lib/common/cmp_error.h
+++ b/lib/common/cmp_error.h
@@ -24,7 +24,6 @@
 
 
 #include <stdint.h>
-#include "cmp_error_list.h"
 
 
 /**
diff --git a/lib/common/cmp_support.c b/lib/common/cmp_support.c
index e438087..d03a03e 100644
--- a/lib/common/cmp_support.c
+++ b/lib/common/cmp_support.c
@@ -17,11 +17,14 @@
  * @see Data Compression User Manual PLATO-UVIE-PL-UM-0001
  */
 
+#include <stdint.h>
+
 #include "compiler.h"
 
 #include "cmp_support.h"
 #include "cmp_debug.h"
 #include "leon_inttypes.h"
+#include "cmp_cal_up_model.h"
 
 
 /**
@@ -325,12 +328,12 @@ uint32_t cmp_icu_max_spill(unsigned int cmp_par)
 	/* the ICU compressor can generate code words with a length of maximal 32 bits. */
 	unsigned int const max_cw_bits = 32;
 	unsigned int const cutoff = (0x2U << (ilog_2(cmp_par) & 0x1FU)) - cmp_par;
-	unsigned int const max_n_sym_offset = max_cw_bits/2 - 1;
+	unsigned int const max_n_sym_offset = (max_cw_bits/2) - 1;
 
 	if (!cmp_par || cmp_par > MAX_NON_IMA_GOLOMB_PAR)
 		return 0;
 
-	return (max_cw_bits-1-ilog_2(cmp_par))*cmp_par + cutoff
+	return ((max_cw_bits-1-ilog_2(cmp_par))*cmp_par) + cutoff
 		- max_n_sym_offset - 1;
 }
 
diff --git a/lib/common/cmp_support.h b/lib/common/cmp_support.h
index c504336..ad1d86b 100644
--- a/lib/common/cmp_support.h
+++ b/lib/common/cmp_support.h
@@ -22,13 +22,10 @@
 #include <stdint.h>
 #include <stddef.h>
 
-#include "cmp_cal_up_model.h"
 
 #define CMP_COLLECTION_FILD_SIZE 2
 
 
-
-
 #define CMP_LOSSLESS	0
 #define CMP_PAR_UNUNSED	0
 
diff --git a/lib/common/compiler.h b/lib/common/compiler.h
index 5128c0c..298a325 100644
--- a/lib/common/compiler.h
+++ b/lib/common/compiler.h
@@ -54,7 +54,7 @@
  * will cause a build error
  */
 
-#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
+#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
 
 #define bitsizeof(x)  (CHAR_BIT * sizeof(x))
 
diff --git a/lib/common/vsnprintf.h b/lib/common/vsnprintf.h
index 8afed65..ce7dcab 100644
--- a/lib/common/vsnprintf.h
+++ b/lib/common/vsnprintf.h
@@ -21,6 +21,9 @@
 #define VSNPRINTF_H
 
 #if (DEBUGLEVEL > 0)
+#include <stdarg.h>
+#include <stddef.h>
+
 int my_vsnprintf(char* buffer, size_t count, const char* format, va_list va);
 #endif
 
diff --git a/lib/decmp.h b/lib/decmp.h
index 3cdeb4c..4694906 100644
--- a/lib/decmp.h
+++ b/lib/decmp.h
@@ -19,6 +19,8 @@
 #ifndef DECMP_H
 #define DECMP_H
 
+#include <stdint.h>
+
 #include "common/cmp_entity.h"
 #include "common/cmp_support.h"
 
diff --git a/lib/decompress/decmp.c b/lib/decompress/decmp.c
index 3baa4f8..bd93d8a 100644
--- a/lib/decompress/decmp.c
+++ b/lib/decompress/decmp.c
@@ -37,10 +37,11 @@
 #include "../common/cmp_debug.h"
 #include "../common/cmp_support.h"
 #include "../common/cmp_entity.h"
+#include "../common/cmp_cal_up_model.h"
 #include "../common/cmp_max_used_bits.h"
 
 
-#define CORRUPTION_DETECTED -1
+#define CORRUPTION_DETECTED (-1)
 
 
 MAYBE_UNUSED static const char *please_check_str =
@@ -1596,6 +1597,7 @@ static int decompressed_data_internal(const struct cmp_cfg *cfg, enum decmp_type
 		case DATA_TYPE_F_FX_EFX:
 		case DATA_TYPE_F_FX_NCOB:
 		case DATA_TYPE_F_FX_EFX_NCOB_ECOB:
+		case DATA_TYPE_CHUNK:
 		case DATA_TYPE_UNKNOWN:
 		default:
 			err = -1;
diff --git a/lib/icu_compress/cmp_icu.c b/lib/icu_compress/cmp_icu.c
index 5d8fbdb..1e5e7bc 100644
--- a/lib/icu_compress/cmp_icu.c
+++ b/lib/icu_compress/cmp_icu.c
@@ -23,12 +23,15 @@
 #include <limits.h>
 
 #include "../common/byteorder.h"
+#include "../common/compiler.h"
 #include "../common/cmp_debug.h"
 #include "../common/cmp_data_types.h"
 #include "../common/cmp_support.h"
+#include "../common/cmp_cal_up_model.h"
 #include "../common/cmp_max_used_bits.h"
 #include "../common/cmp_entity.h"
 #include "../common/cmp_error.h"
+#include "../common/cmp_error_list.h"
 #include "../common/leon_inttypes.h"
 #include "cmp_chunk_type.h"
 
@@ -1602,6 +1605,7 @@ static uint32_t compress_data_internal(const struct cmp_cfg *cfg, uint32_t strea
 		case DATA_TYPE_F_FX_EFX:
 		case DATA_TYPE_F_FX_NCOB:
 		case DATA_TYPE_F_FX_EFX_NCOB_ECOB:
+		case DATA_TYPE_CHUNK:
 		case DATA_TYPE_UNKNOWN:
 		default:
 			RETURN_ERROR(INT_DATA_TYPE_UNSUPPORTED, "");
diff --git a/lib/rdcu_compress/cmp_rdcu.c b/lib/rdcu_compress/cmp_rdcu.c
index d1e54e7..8a7264b 100644
--- a/lib/rdcu_compress/cmp_rdcu.c
+++ b/lib/rdcu_compress/cmp_rdcu.c
@@ -27,6 +27,7 @@
  */
 
 
+#include <stddef.h>
 #include <stdint.h>
 
 #include "../common/cmp_debug.h"
diff --git a/lib/rdcu_compress/cmp_rdcu_cfg.c b/lib/rdcu_compress/cmp_rdcu_cfg.c
index 9db8354..2968004 100644
--- a/lib/rdcu_compress/cmp_rdcu_cfg.c
+++ b/lib/rdcu_compress/cmp_rdcu_cfg.c
@@ -25,6 +25,7 @@
 #include "../common/cmp_support.h"
 #include "../common/leon_inttypes.h"
 #include "../common/compiler.h"
+#include "../common/cmp_cal_up_model.h"
 #include "rdcu_cmd.h"
 #include "cmp_rdcu_cfg.h"
 
diff --git a/lib/rdcu_compress/cmp_rdcu_cfg.h b/lib/rdcu_compress/cmp_rdcu_cfg.h
index e754b4d..06a9c0a 100644
--- a/lib/rdcu_compress/cmp_rdcu_cfg.h
+++ b/lib/rdcu_compress/cmp_rdcu_cfg.h
@@ -19,6 +19,8 @@
 #ifndef CMP_RDCU_CFG_H
 #define CMP_RDCU_CFG_H
 
+#include <stdint.h>
+
 #include "../common/cmp_support.h"
 
 
diff --git a/lib/rdcu_compress/cmp_rdcu_testing.h b/lib/rdcu_compress/cmp_rdcu_testing.h
index 644a06b..91975fa 100644
--- a/lib/rdcu_compress/cmp_rdcu_testing.h
+++ b/lib/rdcu_compress/cmp_rdcu_testing.h
@@ -20,6 +20,8 @@
 #ifndef CMP_RDCU_TESTING_H
 #define CMP_RDCU_TESTING_H
 
+#include <stdint.h>
+
 #include "../common/cmp_support.h"
 
 int rdcu_start_compression(void);
diff --git a/lib/rdcu_compress/rdcu_cmd.c b/lib/rdcu_compress/rdcu_cmd.c
index 79ac614..6fbc4f7 100644
--- a/lib/rdcu_compress/rdcu_cmd.c
+++ b/lib/rdcu_compress/rdcu_cmd.c
@@ -17,6 +17,7 @@
  * @see FPGA Requirement Specification PLATO-IWF-PL-RS-005 Issue 0.7
  */
 
+#include <stdint.h>
 
 #include "rmap.h"
 #include "rdcu_cmd.h"
diff --git a/lib/rdcu_compress/rdcu_ctrl.c b/lib/rdcu_compress/rdcu_ctrl.c
index c5d748e..385b9c8 100644
--- a/lib/rdcu_compress/rdcu_ctrl.c
+++ b/lib/rdcu_compress/rdcu_ctrl.c
@@ -2517,7 +2517,6 @@ int rdcu_sync_sram_mirror_parallel(uint32_t rx_addr, uint32_t rx_size,
 }
 
 
-
 /**
  * @brief initialise the rdcu control library
  *
diff --git a/lib/rdcu_compress/rdcu_rmap.c b/lib/rdcu_compress/rdcu_rmap.c
index c0b7662..93a307a 100644
--- a/lib/rdcu_compress/rdcu_rmap.c
+++ b/lib/rdcu_compress/rdcu_rmap.c
@@ -62,6 +62,7 @@
  */
 
 
+#include <stdint.h>
 #include <stdlib.h>
 #include <string.h>
 
diff --git a/lib/rdcu_compress/rmap.c b/lib/rdcu_compress/rmap.c
index c713135..33871bc 100644
--- a/lib/rdcu_compress/rmap.c
+++ b/lib/rdcu_compress/rmap.c
@@ -19,7 +19,7 @@
  */
 
 
-
+#include <stdint.h>
 #include <string.h>
 #include <stdlib.h>
 
diff --git a/programs/cmp_guess.c b/programs/cmp_guess.c
index 14b231f..c76d1da 100644
--- a/programs/cmp_guess.c
+++ b/programs/cmp_guess.c
@@ -146,7 +146,7 @@ static uint32_t pre_cal_method(struct rdcu_cfg *rcfg)
 	rcfg->golomb_par = golomb_par_best;
 	rcfg->spill = spill_best;
 
-	return (uint32_t)cmp_size_best;
+	return cmp_size_best;
 }
 
 
@@ -203,7 +203,7 @@ static uint32_t brute_force(struct rdcu_cfg *rcfg)
 	rcfg->golomb_par = golomb_par_best;
 	rcfg->spill = spill_best;
 
-	return (uint32_t)cmp_size_best;
+	return cmp_size_best;
 }
 
 
diff --git a/programs/cmp_tool.c b/programs/cmp_tool.c
index 5a9f5de..ab1d8e3 100644
--- a/programs/cmp_tool.c
+++ b/programs/cmp_tool.c
@@ -745,8 +745,7 @@ static int compression_of_chunk(const void *chunk, uint32_t size, void *model,
 		goto cmp_chunk_fail;
 
 	printf("DONE\nWrite compressed data to file %s.cmp ... ", output_prefix);
-	error = write_data_to_file(cmp_data, (uint32_t)cmp_size, output_prefix,
-				   ".cmp", io_flags);
+	error = write_data_to_file(cmp_data, cmp_size, output_prefix, ".cmp", io_flags);
 
 cmp_chunk_fail:
 	free(cmp_data);
diff --git a/test/bench/benchfn.c b/test/bench/benchfn.c
index d9a746b..5f768c3 100644
--- a/test/bench/benchfn.c
+++ b/test/bench/benchfn.c
@@ -37,9 +37,9 @@
 /* *************************************
 *  Debug errors
 ***************************************/
-__extension__
 #if defined(DEBUGLEVEL) && (DEBUGLEVEL >= 1)
 #  include <stdio.h> /* fprintf */
+   __extension__
 #  define DISPLAY(...) fprintf(stderr, __VA_ARGS__)
 #  define DEBUGOUTPUT(...)                    \
 	{                                     \
diff --git a/test/cmp_decmp/test_cmp_decmp.c b/test/cmp_decmp/test_cmp_decmp.c
index b1d1241..b89320c 100644
--- a/test/cmp_decmp/test_cmp_decmp.c
+++ b/test/cmp_decmp/test_cmp_decmp.c
@@ -27,6 +27,7 @@
 #include <unity.h>
 #include "../test_common/test_common.h"
 #include "../test_common/chunk_round_trip.h"
+#include "cmp_support.h"
 
 #include <cmp_icu.h>
 #include <cmp_chunk.h>
@@ -37,6 +38,7 @@
 #include <byteorder.h>
 #include <cmp_error.h>
 #include <cmp_max_used_bits.h>
+#include <cmp_cal_up_model.h>
 
 #if defined __has_include
 #  if __has_include(<time.h>)
@@ -580,6 +582,8 @@ size_t generate_random_collection(struct collection_hdr *col, enum cmp_data_type
 		size += gen_fc_background_data(science_data, samples,
 					       gen_data_f, extra);
 		break;
+	case DATA_TYPE_CHUNK:
+	case DATA_TYPE_UNKNOWN:
 	default:
 		TEST_FAIL();
 	}
@@ -940,7 +944,7 @@ void test_random_collection_round_trip(void)
 	enum cmp_data_type data_type;
 	enum cmp_mode cmp_mode;
 	enum { MAX_DATA_TO_COMPRESS_SIZE = UINT16_MAX};
-	uint32_t cmp_data_capacity = COMPRESS_CHUNK_BOUND(MAX_DATA_TO_COMPRESS_SIZE, 1);
+	uint32_t cmp_data_capacity = COMPRESS_CHUNK_BOUND(MAX_DATA_TO_COMPRESS_SIZE, 1U);
 	int run;
 #ifdef __sparc__
 	void *data          = (void *)0x63000000;
@@ -994,7 +998,7 @@ void test_random_collection_round_trip(void)
 				struct cmp_par par;
 				uint32_t cmp_size, cmp_size2;
 
-				cmp_data_capacity = COMPRESS_CHUNK_BOUND(MAX_DATA_TO_COMPRESS_SIZE, 1);
+				cmp_data_capacity = COMPRESS_CHUNK_BOUND(MAX_DATA_TO_COMPRESS_SIZE, 1U);
 
 				generate_random_cmp_par(&par);
 				par.cmp_mode = cmp_mode;
@@ -1411,7 +1415,7 @@ void test_cmp_decmp_chunk_raw(void)
 		dst_capacity = (uint32_t)cmp_size;
 		dst = malloc(dst_capacity); TEST_ASSERT_NOT_NULL(dst);
 		cmp_size = compress_chunk(chunk, chunk_size, NULL, NULL, dst, dst_capacity, &par);
-		TEST_ASSERT_EQUAL_INT(cmp_size_exp, dst_capacity);
+		TEST_ASSERT_EQUAL_INT(cmp_size_exp, cmp_size);
 	}
 
 	/* check results */
@@ -1495,7 +1499,7 @@ void test_cmp_decmp_chunk_worst_case(void)
 		uint16_t s;
 		uint8_t *p, i;
 
-		chunk = malloc(chunk_size); TEST_ASSERT_NOT_NULL(chunk);
+		chunk = calloc(1, chunk_size); TEST_ASSERT_NOT_NULL(chunk);
 		generate_random_collection_hdr(chunk, DATA_TYPE_S_FX, 2);
 		p = chunk;
 		p += COLLECTION_HDR_SIZE;
diff --git a/test/cmp_icu/test_cmp_icu.c b/test/cmp_icu/test_cmp_icu.c
index f2cadf6..7aef7ea 100644
--- a/test/cmp_icu/test_cmp_icu.c
+++ b/test/cmp_icu/test_cmp_icu.c
@@ -1993,7 +1993,7 @@ void test_compress_chunk_error_cases(void)
 	uint8_t updated_chunk_model[CHUNK_SIZE];
 	uint32_t dst[COMPRESS_CHUNK_BOUND(CHUNK_SIZE, 2)/sizeof(uint32_t)];
 	uint32_t dst_capacity = sizeof(dst);
-	struct cmp_par cmp_par;
+	struct cmp_par cmp_par = {0};
 	uint32_t cmp_size;
 	struct collection_hdr *col2;
 
@@ -2582,6 +2582,7 @@ void test_buffer_overlaps(void)
 	TEST_ASSERT_TRUE(overlap);
 
 	overlap = buffer_overlaps(&buf_a[0], 2, &buf_a[1], 2);
+	TEST_ASSERT_TRUE(overlap);
 	overlap = buffer_overlaps(&buf_a[1], 2, &buf_a[0], 2);
 	TEST_ASSERT_TRUE(overlap);
 }
diff --git a/test/cmp_rdcu_cfg/test_cmp_rdcu_cfg.c b/test/cmp_rdcu_cfg/test_cmp_rdcu_cfg.c
index 06d524f..c23b3cc 100644
--- a/test/cmp_rdcu_cfg/test_cmp_rdcu_cfg.c
+++ b/test/cmp_rdcu_cfg/test_cmp_rdcu_cfg.c
@@ -21,6 +21,7 @@
 #include <unity.h>
 #include <cmp_rdcu_cfg.h>
 #include <rdcu_cmd.h>
+#include <cmp_cal_up_model.h>
 
 
 /**
@@ -247,6 +248,7 @@ void test_rdcu_cfg_buffers_model(void)
 	/* test a RAW mode buffer configuration */
 	error = rdcu_cfg_create(&rcfg, CMP_MODE_MODEL_MULTI, MAX_MODEL_VALUE,
 				CMP_LOSSLESS);
+	TEST_ASSERT_FALSE(error);
 
 	rdcu_data_adr = 0x0;
 	rdcu_model_adr = 0x8;
diff --git a/test/decmp/test_decmp.c b/test/decmp/test_decmp.c
index 44048ea..93d3952 100644
--- a/test/decmp/test_decmp.c
+++ b/test/decmp/test_decmp.c
@@ -40,14 +40,14 @@
 
 void test_bitstream(void)
 {
-	uint8_t i, data[12];
+	uint8_t data[12];
 	struct bit_decoder dec;
-	size_t ret;
+	size_t i, ret;
 	int status;
 	uint32_t read_bits;
 
 	for (i = 0; i < sizeof(data); ++i)
-		data[i] = i;
+		data[i] = (uint8_t)i;
 
 	ret = bit_init_decoder(&dec, data, sizeof(data));
 	TEST_ASSERT_EQUAL_size_t(sizeof(data), ret);
@@ -856,7 +856,7 @@ void test_multi_refill_needed(void)
 {
 	uint32_t decoded_value = ~0U;
 	uint8_t cmp_data[] = {0x7F, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0x00};
-	uint32_t cmp_data2[2];
+	uint32_t cmp_data2[2] = {0};
 	struct bit_decoder dec = {0};
 	struct decoder_setup setup = {0};
 	uint32_t spillover = 16;
@@ -1061,7 +1061,7 @@ void test_decompress_imagette_chunk_raw(void)
 	uint8_t *decompressed_data;
 	struct cmp_entity *ent;
 	uint32_t ent_size;
-	uint32_t chunk_size = 2*(COLLECTION_HDR_SIZE + sizeof(data));
+	uint32_t const chunk_size = 2*(COLLECTION_HDR_SIZE + sizeof(data));
 	uint8_t *chunk = calloc(1, chunk_size); TEST_ASSERT_TRUE(chunk);
 
 	for (i = 0; i < 2; i++) {
-- 
GitLab