Fix more GCC warnings

This commit is contained in:
zeichensystem 2025-12-21 19:51:42 +01:00
parent a964466c8b
commit 2f50db1858
16 changed files with 512 additions and 512 deletions

View File

@ -18,7 +18,7 @@ if (NOT DEFINED CMAKE_DEBUG_POSTFIX)
endif ()
if (NOT DEFINED MSVC)
set(WARNING_FLAGS_C -Wall -Wextra -Wpedantic -Wvla -Wshadow -Wundef -Wmisleading-indentation -Wnull-dereference -Wswitch-default -Wstrict-overflow=5 -Wconversion -Wno-sign-conversion -Wsign-promo -Wcast-align -Wcast-qual -Wdouble-promotion -Wformat=2 -Winit-self -Wdisabled-optimization -Wno-unused-function)
set(WARNING_FLAGS_C -Wall -Wextra -Wpedantic -Wvla -Wshadow -Wundef -Wmisleading-indentation -Wnull-dereference -Wswitch-default -Wstrict-overflow=5 -Wconversion -Wno-sign-conversion -Wcast-align -Wcast-qual -Wdouble-promotion -Wformat=2 -Winit-self -Wdisabled-optimization -Wno-unused-function)
set(WARNING_FLAGS_CXX -Wall -Wextra -Wpedantic -Wvla -Wshadow -Wundef -Wmisleading-indentation -Wnull-dereference -Wswitch-default -Wstrict-overflow=5 -Wconversion -Wno-sign-conversion -Wsign-promo -Wcast-align -Wcast-qual -Wdouble-promotion -Wformat=2 -Winit-self -Wdisabled-optimization -Woverloaded-virtual -Wredundant-decls -Wctor-dtor-privacy -Wno-unused-function)
set(DBG_FLAGS -fsanitize=undefined,address -g3 -Og)
else ()

View File

@ -23,7 +23,6 @@ typedef struct guf_libc_alloc_ctx {
#if !defined(GUF_ALLOC_LIBC_IMPL_STATIC) && !defined(GUF_ALLOC_LIBC_IMPL)
GUF_ALLOC_LIBC_KWRDS void *guf_libc_alloc(ptrdiff_t size, void *ctx);
GUF_ALLOC_LIBC_KWRDS void *guf_libc_realloc(void *ptr, ptrdiff_t old_size, ptrdiff_t new_size, void *ctx);
GUF_ALLOC_LIBC_KWRDS void *guf_libc_realloc(void *ptr, ptrdiff_t old_size, ptrdiff_t new_size, void *ctx);
GUF_ALLOC_LIBC_KWRDS void guf_libc_free(void *ptr, ptrdiff_t size, void *ctx);
GUF_ALLOC_LIBC_KWRDS guf_allocator *guf_libc_allocator_init(guf_allocator *a, guf_libc_alloc_ctx *ctx);
@ -71,7 +70,7 @@ GUF_ALLOC_LIBC_KWRDS void *guf_libc_realloc(void *ptr, ptrdiff_t old_size, ptrdi
const ptrdiff_t len = new_size - old_size;
GUF_ASSERT(len > 0);
GUF_ASSERT(old_size + len == new_size);
memset((char*)ptr + old_size, 0, len); // TODO: sketchy
memset((char*)new_ptr + old_size, 0, len); // TODO: sketchy
}
if (alloc_ctx && alloc_ctx->tracker.enabled) {

View File

@ -275,7 +275,7 @@ GUF_DICT_KWRDS GUF_DICT_NAME *GUF_CAT(GUF_DICT_NAME, _try_init_with_capacity)(GU
if (kv_elem_capacity > 0) {
const size_t MAX_IDX_CAP = GUF_ALLOC_MAX_CAPACITY(GUF_DICT_KV_META_T);
const size_t desired_idx_cap = (size_t)guf_min_f64(kv_elem_capacity * 1.0 / GUF_DICT_MAX_LOAD_FACTOR, MAX_IDX_CAP);
const size_t desired_idx_cap = (size_t)guf_min_f64((double)kv_elem_capacity * 1.0 / GUF_DICT_MAX_LOAD_FACTOR, (double)MAX_IDX_CAP);
// Capacities must be powers of two.
size_t kv_idx_cap = 1;
while ((kv_idx_cap <= MAX_IDX_CAP / 2) && (kv_idx_cap <= desired_idx_cap)) {
@ -598,7 +598,7 @@ static void GUF_CAT(GUF_DICT_NAME, _try_grow_if_necessary_)(GUF_DICT_NAME *ht, b
ht->kv_indices = new_kv_indices;
ht->kv_indices_cap = ht->kv_indices_cap * KV_META_GROWTH_FAC;;
GUF_ASSERT(guf_is_pow2_size_t(ht->kv_indices_cap));
GUF_ASSERT(new_size_bytes / sizeof(GUF_DICT_KV_META_T) == ht->kv_indices_cap);
GUF_ASSERT((ptrdiff_t)(new_size_bytes / sizeof(GUF_DICT_KV_META_T)) == ht->kv_indices_cap);
// ht->max_probelen = 0;
GUF_CAT(GUF_DICT_NAME, _reinsert_elems_)(ht);
GUF_ASSERT(ht->num_tombstones == 0);

View File

@ -215,16 +215,16 @@ static inline unsigned long long guf_uabs_long_long(long long x) {if (x >= 0
static inline size_t guf_uabs_ptrdiff_t(ptrdiff_t x) {if (x >= 0) {return x;} else if (x == PTRDIFF_MIN && -PTRDIFF_MAX != PTRDIFF_MIN) {return (size_t)PTRDIFF_MAX + 1u;} else {return -x;}}
#if defined(UINT8_MAX) && defined(INT8_MAX)
static inline uint8_t guf_uabs_i8(int8_t x) {if (x >= 0) {return x;} else if (x == INT8_MIN) {return (uint8_t)INT8_MAX + 1u;} else {return -x;}}
static inline uint8_t guf_uabs_i8(int8_t x) {if (x >= 0) {return x;} else if (x == INT8_MIN) {return (uint8_t)INT8_MAX + (uint8_t)1u;} else {return (uint8_t)-x;}}
#endif
#if defined(UINT16_MAX) && defined(INT16_MAX)
static inline uint16_t guf_uabs_i16(int16_t x) {if (x >= 0) {return x;} else if (x == INT16_MIN) {return (uint16_t)INT16_MAX + 1u;} else {return -x;}}
static inline uint16_t guf_uabs_i16(int16_t x) {if (x >= 0) {return x;} else if (x == INT16_MIN) {return (uint16_t)INT16_MAX + (uint16_t)1u;} else {return (uint16_t)-x;}}
#endif
#if defined(UINT32_MAX) && defined(INT32_MAX)
static inline uint32_t guf_uabs_i32(int32_t x) {if (x >= 0) {return x;} else if (x == INT32_MIN) {return (uint32_t)INT32_MAX + 1u;} else {return -x;}}
static inline uint32_t guf_uabs_i32(int32_t x) {if (x >= 0) {return x;} else if (x == INT32_MIN) {return (uint32_t)INT32_MAX + (uint32_t)1u;} else {return (uint32_t)-x;}}
#endif
#if defined(UINT64_MAX) && defined(INT64_MAX)
static inline uint64_t guf_uabs_i64(int64_t x) {if (x >= 0) {return x;} else if (x == INT64_MIN) {return (uint64_t)INT64_MAX + 1u;} else {return -x;}}
static inline uint64_t guf_uabs_i64(int64_t x) {if (x >= 0) {return x;} else if (x == INT64_MIN) {return (uint64_t)INT64_MAX + (uint64_t)1u;} else {return (uint64_t)-x;}}
#endif
// absdiff functions with unsigned result (cannot fail)

View File

@ -70,9 +70,9 @@
#if defined(GUF_MATH_CKDINT_IMPL_STATIC)
#define GUF_MATH_CKDINT_KWRDS static inline
#define GUF_MATH_CKDINT_KWRDS static inline
#else
#define GUF_MATH_CKDINT_KWRDS
#define GUF_MATH_CKDINT_KWRDS
#endif
#ifndef GUF_MATH_CKDINT_H
@ -81,8 +81,8 @@
typedef enum guf_math_ckd_result {GUF_MATH_CKD_SUCCESS = 0, GUF_MATH_CKD_OVERFLOW_POS, GUF_MATH_CKD_OVERFLOW_NEG} guf_math_ckd_result;
#if !defined(GUF_MATH_CKDINT_IMPL_STATIC) && !defined(GUF_MATH_CKDINT_IMPL)
#if !defined(GUF_MATH_CKDINT_IMPL_STATIC) && !defined(GUF_MATH_CKDINT_IMPL)
// Signed integer arithmetic checks (generated with libguf/tools/ckdint-gen.py)
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_add_int(int a, int b);
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_int(int a, int b);
@ -451,7 +451,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_int(int a, int b)
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_int(int a, int b)
{
if (b > 0) {
if (a > INT_MAX / b) {
if (a > INT_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
} else if (a < INT_MIN / b) {
return GUF_MATH_CKD_OVERFLOW_NEG;
@ -459,7 +459,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_int(int a, int b)
return GUF_MATH_CKD_SUCCESS;
}
} else if (b < 0) {
if (INT_MIN != -INT_MAX && b == -1) { // Prevent potential (INT_MIN / b) overflow for b == -1
if (INT_MIN != -INT_MAX && b == -1) { // Prevent potential (INT_MIN / b) overflow for b == -1
return a == INT_MIN ? GUF_MATH_CKD_OVERFLOW_POS : GUF_MATH_CKD_SUCCESS;
} else if (a < INT_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
@ -496,7 +496,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_long(long a, long b)
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_long(long a, long b)
{
if (b > 0) {
if (a > LONG_MAX / b) {
if (a > LONG_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
} else if (a < LONG_MIN / b) {
return GUF_MATH_CKD_OVERFLOW_NEG;
@ -504,7 +504,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_long(long a, long b)
return GUF_MATH_CKD_SUCCESS;
}
} else if (b < 0) {
if (LONG_MIN != -LONG_MAX && b == -1) { // Prevent potential (LONG_MIN / b) overflow for b == -1
if (LONG_MIN != -LONG_MAX && b == -1) { // Prevent potential (LONG_MIN / b) overflow for b == -1
return a == LONG_MIN ? GUF_MATH_CKD_OVERFLOW_POS : GUF_MATH_CKD_SUCCESS;
} else if (a < LONG_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
@ -541,7 +541,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_long_long(long long a, lon
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_long_long(long long a, long long b)
{
if (b > 0) {
if (a > LLONG_MAX / b) {
if (a > LLONG_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
} else if (a < LLONG_MIN / b) {
return GUF_MATH_CKD_OVERFLOW_NEG;
@ -549,7 +549,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_long_long(long long a, lon
return GUF_MATH_CKD_SUCCESS;
}
} else if (b < 0) {
if (LLONG_MIN != -LLONG_MAX && b == -1) { // Prevent potential (LLONG_MIN / b) overflow for b == -1
if (LLONG_MIN != -LLONG_MAX && b == -1) { // Prevent potential (LLONG_MIN / b) overflow for b == -1
return a == LLONG_MIN ? GUF_MATH_CKD_OVERFLOW_POS : GUF_MATH_CKD_SUCCESS;
} else if (a < LLONG_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
@ -586,7 +586,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_ptrdiff_t(ptrdiff_t a, ptr
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_ptrdiff_t(ptrdiff_t a, ptrdiff_t b)
{
if (b > 0) {
if (a > PTRDIFF_MAX / b) {
if (a > PTRDIFF_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
} else if (a < PTRDIFF_MIN / b) {
return GUF_MATH_CKD_OVERFLOW_NEG;
@ -594,7 +594,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_ptrdiff_t(ptrdiff_t a, ptr
return GUF_MATH_CKD_SUCCESS;
}
} else if (b < 0) {
if (PTRDIFF_MIN != -PTRDIFF_MAX && b == -1) { // Prevent potential (PTRDIFF_MIN / b) overflow for b == -1
if (PTRDIFF_MIN != -PTRDIFF_MAX && b == -1) { // Prevent potential (PTRDIFF_MIN / b) overflow for b == -1
return a == PTRDIFF_MIN ? GUF_MATH_CKD_OVERFLOW_POS : GUF_MATH_CKD_SUCCESS;
} else if (a < PTRDIFF_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
@ -631,7 +631,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_least_i8(int_least8_t a, i
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_least_i8(int_least8_t a, int_least8_t b)
{
if (b > 0) {
if (a > GUF_INT8_MAX / b) {
if (a > GUF_INT8_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
} else if (a < GUF_INT8_MIN / b) {
return GUF_MATH_CKD_OVERFLOW_NEG;
@ -639,7 +639,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_least_i8(int_least8_t a, i
return GUF_MATH_CKD_SUCCESS;
}
} else if (b < 0) {
if (GUF_INT8_MIN != -GUF_INT8_MAX && b == -1) { // Prevent potential (GUF_INT8_MIN / b) overflow for b == -1
if (GUF_INT8_MIN != -GUF_INT8_MAX && b == -1) { // Prevent potential (GUF_INT8_MIN / b) overflow for b == -1
return a == GUF_INT8_MIN ? GUF_MATH_CKD_OVERFLOW_POS : GUF_MATH_CKD_SUCCESS;
} else if (a < GUF_INT8_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
@ -676,7 +676,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_least_i16(int_least16_t a,
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_least_i16(int_least16_t a, int_least16_t b)
{
if (b > 0) {
if (a > GUF_INT16_MAX / b) {
if (a > GUF_INT16_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
} else if (a < GUF_INT16_MIN / b) {
return GUF_MATH_CKD_OVERFLOW_NEG;
@ -684,7 +684,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_least_i16(int_least16_t a,
return GUF_MATH_CKD_SUCCESS;
}
} else if (b < 0) {
if (GUF_INT16_MIN != -GUF_INT16_MAX && b == -1) { // Prevent potential (GUF_INT16_MIN / b) overflow for b == -1
if (GUF_INT16_MIN != -GUF_INT16_MAX && b == -1) { // Prevent potential (GUF_INT16_MIN / b) overflow for b == -1
return a == GUF_INT16_MIN ? GUF_MATH_CKD_OVERFLOW_POS : GUF_MATH_CKD_SUCCESS;
} else if (a < GUF_INT16_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
@ -721,7 +721,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_least_i32(int_least32_t a,
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_least_i32(int_least32_t a, int_least32_t b)
{
if (b > 0) {
if (a > GUF_INT32_MAX / b) {
if (a > GUF_INT32_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
} else if (a < GUF_INT32_MIN / b) {
return GUF_MATH_CKD_OVERFLOW_NEG;
@ -729,7 +729,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_least_i32(int_least32_t a,
return GUF_MATH_CKD_SUCCESS;
}
} else if (b < 0) {
if (GUF_INT32_MIN != -GUF_INT32_MAX && b == -1) { // Prevent potential (GUF_INT32_MIN / b) overflow for b == -1
if (GUF_INT32_MIN != -GUF_INT32_MAX && b == -1) { // Prevent potential (GUF_INT32_MIN / b) overflow for b == -1
return a == GUF_INT32_MIN ? GUF_MATH_CKD_OVERFLOW_POS : GUF_MATH_CKD_SUCCESS;
} else if (a < GUF_INT32_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
@ -766,7 +766,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_least_i64(int_least64_t a,
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_least_i64(int_least64_t a, int_least64_t b)
{
if (b > 0) {
if (a > GUF_INT64_MAX / b) {
if (a > GUF_INT64_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
} else if (a < GUF_INT64_MIN / b) {
return GUF_MATH_CKD_OVERFLOW_NEG;
@ -774,7 +774,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_least_i64(int_least64_t a,
return GUF_MATH_CKD_SUCCESS;
}
} else if (b < 0) {
if (GUF_INT64_MIN != -GUF_INT64_MAX && b == -1) { // Prevent potential (GUF_INT64_MIN / b) overflow for b == -1
if (GUF_INT64_MIN != -GUF_INT64_MAX && b == -1) { // Prevent potential (GUF_INT64_MIN / b) overflow for b == -1
return a == GUF_INT64_MIN ? GUF_MATH_CKD_OVERFLOW_POS : GUF_MATH_CKD_SUCCESS;
} else if (a < GUF_INT64_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
@ -812,7 +812,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_i8(int8_t a, int8_t b)
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_i8(int8_t a, int8_t b)
{
if (b > 0) {
if (a > INT8_MAX / b) {
if (a > INT8_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
} else if (a < INT8_MIN / b) {
return GUF_MATH_CKD_OVERFLOW_NEG;
@ -820,7 +820,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_i8(int8_t a, int8_t b)
return GUF_MATH_CKD_SUCCESS;
}
} else if (b < 0) {
if (INT8_MIN != -INT8_MAX && b == -1) { // Prevent potential (INT8_MIN / b) overflow for b == -1
if (INT8_MIN != -INT8_MAX && b == -1) { // Prevent potential (INT8_MIN / b) overflow for b == -1
return a == INT8_MIN ? GUF_MATH_CKD_OVERFLOW_POS : GUF_MATH_CKD_SUCCESS;
} else if (a < INT8_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
@ -859,7 +859,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_i16(int16_t a, int16_t b)
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_i16(int16_t a, int16_t b)
{
if (b > 0) {
if (a > INT16_MAX / b) {
if (a > INT16_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
} else if (a < INT16_MIN / b) {
return GUF_MATH_CKD_OVERFLOW_NEG;
@ -867,7 +867,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_i16(int16_t a, int16_t b)
return GUF_MATH_CKD_SUCCESS;
}
} else if (b < 0) {
if (INT16_MIN != -INT16_MAX && b == -1) { // Prevent potential (INT16_MIN / b) overflow for b == -1
if (INT16_MIN != -INT16_MAX && b == -1) { // Prevent potential (INT16_MIN / b) overflow for b == -1
return a == INT16_MIN ? GUF_MATH_CKD_OVERFLOW_POS : GUF_MATH_CKD_SUCCESS;
} else if (a < INT16_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
@ -906,7 +906,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_i32(int32_t a, int32_t b)
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_i32(int32_t a, int32_t b)
{
if (b > 0) {
if (a > INT32_MAX / b) {
if (a > INT32_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
} else if (a < INT32_MIN / b) {
return GUF_MATH_CKD_OVERFLOW_NEG;
@ -914,7 +914,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_i32(int32_t a, int32_t b)
return GUF_MATH_CKD_SUCCESS;
}
} else if (b < 0) {
if (INT32_MIN != -INT32_MAX && b == -1) { // Prevent potential (INT32_MIN / b) overflow for b == -1
if (INT32_MIN != -INT32_MAX && b == -1) { // Prevent potential (INT32_MIN / b) overflow for b == -1
return a == INT32_MIN ? GUF_MATH_CKD_OVERFLOW_POS : GUF_MATH_CKD_SUCCESS;
} else if (a < INT32_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
@ -953,7 +953,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_sub_i64(int64_t a, int64_t b)
GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_i64(int64_t a, int64_t b)
{
if (b > 0) {
if (a > INT64_MAX / b) {
if (a > INT64_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
} else if (a < INT64_MIN / b) {
return GUF_MATH_CKD_OVERFLOW_NEG;
@ -961,7 +961,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_ckd_mul_i64(int64_t a, int64_t b)
return GUF_MATH_CKD_SUCCESS;
}
} else if (b < 0) {
if (INT64_MIN != -INT64_MAX && b == -1) { // Prevent potential (INT64_MIN / b) overflow for b == -1
if (INT64_MIN != -INT64_MAX && b == -1) { // Prevent potential (INT64_MIN / b) overflow for b == -1
return a == INT64_MIN ? GUF_MATH_CKD_OVERFLOW_POS : GUF_MATH_CKD_SUCCESS;
} else if (a < INT64_MAX / b) {
return GUF_MATH_CKD_OVERFLOW_POS;
@ -1365,10 +1365,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_int(int a, int b, int
*result = a + b;
break;
case GUF_MATH_CKD_OVERFLOW_POS:
*result = (a + INT_MIN) + (b + INT_MIN);
*result = (int)( (a + (int)INT_MIN) + (b + (int)INT_MIN) );
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
*result = (a - INT_MIN) + (b - INT_MIN);
*result = (int)( (a - (int)INT_MIN) + (b - (int)INT_MIN) );
break;
default:
GUF_ASSERT(false);
@ -1386,11 +1386,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_int(int a, int b, int
break;
case GUF_MATH_CKD_OVERFLOW_POS:
GUF_ASSERT(b < 0);
*result = (a + INT_MIN) - (b - INT_MIN); // TODO: not sure
*result = (int)( (a + (int)INT_MIN) - (b - (int)INT_MIN) ); // TODO: not sure
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
GUF_ASSERT(b > 0);
*result = (a - INT_MIN) - (b + INT_MIN); // TODO: not sure
*result = (int)( (a - (int)INT_MIN) - (b + (int)INT_MIN) ); // TODO: not sure
break;
default:
GUF_ASSERT(false);
@ -1413,7 +1413,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_int(int a, int b, int
const unsigned mod = (unsigned)INT_MAX + 1u;
GUF_ASSERT(mod > 0);
res = 1u * res % mod;
*result = INT_MIN + (int)res;
*result = (int)INT_MIN + (int)res;
} else {
*result = (int)res;
}
@ -1496,10 +1496,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_long(long a, long b,
*result = a + b;
break;
case GUF_MATH_CKD_OVERFLOW_POS:
*result = (a + LONG_MIN) + (b + LONG_MIN);
*result = (long)( (a + (long)LONG_MIN) + (b + (long)LONG_MIN) );
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
*result = (a - LONG_MIN) + (b - LONG_MIN);
*result = (long)( (a - (long)LONG_MIN) + (b - (long)LONG_MIN) );
break;
default:
GUF_ASSERT(false);
@ -1517,11 +1517,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_long(long a, long b,
break;
case GUF_MATH_CKD_OVERFLOW_POS:
GUF_ASSERT(b < 0);
*result = (a + LONG_MIN) - (b - LONG_MIN); // TODO: not sure
*result = (long)( (a + (long)LONG_MIN) - (b - (long)LONG_MIN) ); // TODO: not sure
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
GUF_ASSERT(b > 0);
*result = (a - LONG_MIN) - (b + LONG_MIN); // TODO: not sure
*result = (long)( (a - (long)LONG_MIN) - (b + (long)LONG_MIN) ); // TODO: not sure
break;
default:
GUF_ASSERT(false);
@ -1544,7 +1544,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_long(long a, long b,
const unsigned long mod = (unsigned long)LONG_MAX + 1u;
GUF_ASSERT(mod > 0);
res = 1u * res % mod;
*result = LONG_MIN + (long)res;
*result = (long)LONG_MIN + (long)res;
} else {
*result = (long)res;
}
@ -1627,10 +1627,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_long_long(long long a
*result = a + b;
break;
case GUF_MATH_CKD_OVERFLOW_POS:
*result = (a + LLONG_MIN) + (b + LLONG_MIN);
*result = (long long)( (a + (long long)LLONG_MIN) + (b + (long long)LLONG_MIN) );
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
*result = (a - LLONG_MIN) + (b - LLONG_MIN);
*result = (long long)( (a - (long long)LLONG_MIN) + (b - (long long)LLONG_MIN) );
break;
default:
GUF_ASSERT(false);
@ -1648,11 +1648,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_long_long(long long a
break;
case GUF_MATH_CKD_OVERFLOW_POS:
GUF_ASSERT(b < 0);
*result = (a + LLONG_MIN) - (b - LLONG_MIN); // TODO: not sure
*result = (long long)( (a + (long long)LLONG_MIN) - (b - (long long)LLONG_MIN) ); // TODO: not sure
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
GUF_ASSERT(b > 0);
*result = (a - LLONG_MIN) - (b + LLONG_MIN); // TODO: not sure
*result = (long long)( (a - (long long)LLONG_MIN) - (b + (long long)LLONG_MIN) ); // TODO: not sure
break;
default:
GUF_ASSERT(false);
@ -1675,7 +1675,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_long_long(long long a
const unsigned long long mod = (unsigned long long)LLONG_MAX + 1u;
GUF_ASSERT(mod > 0);
res = 1u * res % mod;
*result = LLONG_MIN + (long long)res;
*result = (long long)LLONG_MIN + (long long)res;
} else {
*result = (long long)res;
}
@ -1758,10 +1758,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_ptrdiff_t(ptrdiff_t a
*result = a + b;
break;
case GUF_MATH_CKD_OVERFLOW_POS:
*result = (a + PTRDIFF_MIN) + (b + PTRDIFF_MIN);
*result = (ptrdiff_t)( (a + (ptrdiff_t)PTRDIFF_MIN) + (b + (ptrdiff_t)PTRDIFF_MIN) );
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
*result = (a - PTRDIFF_MIN) + (b - PTRDIFF_MIN);
*result = (ptrdiff_t)( (a - (ptrdiff_t)PTRDIFF_MIN) + (b - (ptrdiff_t)PTRDIFF_MIN) );
break;
default:
GUF_ASSERT(false);
@ -1779,11 +1779,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_ptrdiff_t(ptrdiff_t a
break;
case GUF_MATH_CKD_OVERFLOW_POS:
GUF_ASSERT(b < 0);
*result = (a + PTRDIFF_MIN) - (b - PTRDIFF_MIN); // TODO: not sure
*result = (ptrdiff_t)( (a + (ptrdiff_t)PTRDIFF_MIN) - (b - (ptrdiff_t)PTRDIFF_MIN) ); // TODO: not sure
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
GUF_ASSERT(b > 0);
*result = (a - PTRDIFF_MIN) - (b + PTRDIFF_MIN); // TODO: not sure
*result = (ptrdiff_t)( (a - (ptrdiff_t)PTRDIFF_MIN) - (b + (ptrdiff_t)PTRDIFF_MIN) ); // TODO: not sure
break;
default:
GUF_ASSERT(false);
@ -1806,7 +1806,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_ptrdiff_t(ptrdiff_t a
const size_t mod = (size_t)PTRDIFF_MAX + 1u;
GUF_ASSERT(mod > 0);
res = 1u * res % mod;
*result = PTRDIFF_MIN + (ptrdiff_t)res;
*result = (ptrdiff_t)PTRDIFF_MIN + (ptrdiff_t)res;
} else {
*result = (ptrdiff_t)res;
}
@ -1889,10 +1889,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_least_i8(int_least8_t
*result = a + b;
break;
case GUF_MATH_CKD_OVERFLOW_POS:
*result = (a + GUF_INT8_MIN) + (b + GUF_INT8_MIN);
*result = (int_least8_t)( (a + (int_least8_t)GUF_INT8_MIN) + (b + (int_least8_t)GUF_INT8_MIN) );
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
*result = (a - GUF_INT8_MIN) + (b - GUF_INT8_MIN);
*result = (int_least8_t)( (a - (int_least8_t)GUF_INT8_MIN) + (b - (int_least8_t)GUF_INT8_MIN) );
break;
default:
GUF_ASSERT(false);
@ -1910,11 +1910,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_least_i8(int_least8_t
break;
case GUF_MATH_CKD_OVERFLOW_POS:
GUF_ASSERT(b < 0);
*result = (a + GUF_INT8_MIN) - (b - GUF_INT8_MIN); // TODO: not sure
*result = (int_least8_t)( (a + (int_least8_t)GUF_INT8_MIN) - (b - (int_least8_t)GUF_INT8_MIN) ); // TODO: not sure
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
GUF_ASSERT(b > 0);
*result = (a - GUF_INT8_MIN) - (b + GUF_INT8_MIN); // TODO: not sure
*result = (int_least8_t)( (a - (int_least8_t)GUF_INT8_MIN) - (b + (int_least8_t)GUF_INT8_MIN) ); // TODO: not sure
break;
default:
GUF_ASSERT(false);
@ -1937,7 +1937,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_least_i8(int_least8_t
const uint_least8_t mod = (uint_least8_t)GUF_INT8_MAX + 1u;
GUF_ASSERT(mod > 0);
res = 1u * res % mod;
*result = GUF_INT8_MIN + (int_least8_t)res;
*result = (int_least8_t)GUF_INT8_MIN + (int_least8_t)res;
} else {
*result = (int_least8_t)res;
}
@ -2020,10 +2020,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_least_i16(int_least16
*result = a + b;
break;
case GUF_MATH_CKD_OVERFLOW_POS:
*result = (a + GUF_INT16_MIN) + (b + GUF_INT16_MIN);
*result = (int_least16_t)( (a + (int_least16_t)GUF_INT16_MIN) + (b + (int_least16_t)GUF_INT16_MIN) );
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
*result = (a - GUF_INT16_MIN) + (b - GUF_INT16_MIN);
*result = (int_least16_t)( (a - (int_least16_t)GUF_INT16_MIN) + (b - (int_least16_t)GUF_INT16_MIN) );
break;
default:
GUF_ASSERT(false);
@ -2041,11 +2041,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_least_i16(int_least16
break;
case GUF_MATH_CKD_OVERFLOW_POS:
GUF_ASSERT(b < 0);
*result = (a + GUF_INT16_MIN) - (b - GUF_INT16_MIN); // TODO: not sure
*result = (int_least16_t)( (a + (int_least16_t)GUF_INT16_MIN) - (b - (int_least16_t)GUF_INT16_MIN) ); // TODO: not sure
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
GUF_ASSERT(b > 0);
*result = (a - GUF_INT16_MIN) - (b + GUF_INT16_MIN); // TODO: not sure
*result = (int_least16_t)( (a - (int_least16_t)GUF_INT16_MIN) - (b + (int_least16_t)GUF_INT16_MIN) ); // TODO: not sure
break;
default:
GUF_ASSERT(false);
@ -2068,7 +2068,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_least_i16(int_least16
const uint_least16_t mod = (uint_least16_t)GUF_INT16_MAX + 1u;
GUF_ASSERT(mod > 0);
res = 1u * res % mod;
*result = GUF_INT16_MIN + (int_least16_t)res;
*result = (int_least16_t)GUF_INT16_MIN + (int_least16_t)res;
} else {
*result = (int_least16_t)res;
}
@ -2151,10 +2151,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_least_i32(int_least32
*result = a + b;
break;
case GUF_MATH_CKD_OVERFLOW_POS:
*result = (a + GUF_INT32_MIN) + (b + GUF_INT32_MIN);
*result = (int_least32_t)( (a + (int_least32_t)GUF_INT32_MIN) + (b + (int_least32_t)GUF_INT32_MIN) );
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
*result = (a - GUF_INT32_MIN) + (b - GUF_INT32_MIN);
*result = (int_least32_t)( (a - (int_least32_t)GUF_INT32_MIN) + (b - (int_least32_t)GUF_INT32_MIN) );
break;
default:
GUF_ASSERT(false);
@ -2172,11 +2172,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_least_i32(int_least32
break;
case GUF_MATH_CKD_OVERFLOW_POS:
GUF_ASSERT(b < 0);
*result = (a + GUF_INT32_MIN) - (b - GUF_INT32_MIN); // TODO: not sure
*result = (int_least32_t)( (a + (int_least32_t)GUF_INT32_MIN) - (b - (int_least32_t)GUF_INT32_MIN) ); // TODO: not sure
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
GUF_ASSERT(b > 0);
*result = (a - GUF_INT32_MIN) - (b + GUF_INT32_MIN); // TODO: not sure
*result = (int_least32_t)( (a - (int_least32_t)GUF_INT32_MIN) - (b + (int_least32_t)GUF_INT32_MIN) ); // TODO: not sure
break;
default:
GUF_ASSERT(false);
@ -2199,7 +2199,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_least_i32(int_least32
const uint_least32_t mod = (uint_least32_t)GUF_INT32_MAX + 1u;
GUF_ASSERT(mod > 0);
res = 1u * res % mod;
*result = GUF_INT32_MIN + (int_least32_t)res;
*result = (int_least32_t)GUF_INT32_MIN + (int_least32_t)res;
} else {
*result = (int_least32_t)res;
}
@ -2282,10 +2282,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_least_i64(int_least64
*result = a + b;
break;
case GUF_MATH_CKD_OVERFLOW_POS:
*result = (a + GUF_INT64_MIN) + (b + GUF_INT64_MIN);
*result = (int_least64_t)( (a + (int_least64_t)GUF_INT64_MIN) + (b + (int_least64_t)GUF_INT64_MIN) );
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
*result = (a - GUF_INT64_MIN) + (b - GUF_INT64_MIN);
*result = (int_least64_t)( (a - (int_least64_t)GUF_INT64_MIN) + (b - (int_least64_t)GUF_INT64_MIN) );
break;
default:
GUF_ASSERT(false);
@ -2303,11 +2303,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_least_i64(int_least64
break;
case GUF_MATH_CKD_OVERFLOW_POS:
GUF_ASSERT(b < 0);
*result = (a + GUF_INT64_MIN) - (b - GUF_INT64_MIN); // TODO: not sure
*result = (int_least64_t)( (a + (int_least64_t)GUF_INT64_MIN) - (b - (int_least64_t)GUF_INT64_MIN) ); // TODO: not sure
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
GUF_ASSERT(b > 0);
*result = (a - GUF_INT64_MIN) - (b + GUF_INT64_MIN); // TODO: not sure
*result = (int_least64_t)( (a - (int_least64_t)GUF_INT64_MIN) - (b + (int_least64_t)GUF_INT64_MIN) ); // TODO: not sure
break;
default:
GUF_ASSERT(false);
@ -2330,7 +2330,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_least_i64(int_least64
const uint_least64_t mod = (uint_least64_t)GUF_INT64_MAX + 1u;
GUF_ASSERT(mod > 0);
res = 1u * res % mod;
*result = GUF_INT64_MIN + (int_least64_t)res;
*result = (int_least64_t)GUF_INT64_MIN + (int_least64_t)res;
} else {
*result = (int_least64_t)res;
}
@ -2414,10 +2414,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_i8(int8_t a, int8_t b
*result = a + b;
break;
case GUF_MATH_CKD_OVERFLOW_POS:
*result = (a + INT8_MIN) + (b + INT8_MIN);
*result = (int8_t)( (a + (int8_t)INT8_MIN) + (b + (int8_t)INT8_MIN) );
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
*result = (a - INT8_MIN) + (b - INT8_MIN);
*result = (int8_t)( (a - (int8_t)INT8_MIN) + (b - (int8_t)INT8_MIN) );
break;
default:
GUF_ASSERT(false);
@ -2435,11 +2435,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_i8(int8_t a, int8_t b
break;
case GUF_MATH_CKD_OVERFLOW_POS:
GUF_ASSERT(b < 0);
*result = (a + INT8_MIN) - (b - INT8_MIN); // TODO: not sure
*result = (int8_t)( (a + (int8_t)INT8_MIN) - (b - (int8_t)INT8_MIN) ); // TODO: not sure
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
GUF_ASSERT(b > 0);
*result = (a - INT8_MIN) - (b + INT8_MIN); // TODO: not sure
*result = (int8_t)( (a - (int8_t)INT8_MIN) - (b + (int8_t)INT8_MIN) ); // TODO: not sure
break;
default:
GUF_ASSERT(false);
@ -2462,7 +2462,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_i8(int8_t a, int8_t b
const uint8_t mod = (uint8_t)INT8_MAX + 1u;
GUF_ASSERT(mod > 0);
res = 1u * res % mod;
*result = INT8_MIN + (int8_t)res;
*result = (int8_t)INT8_MIN + (int8_t)res;
} else {
*result = (int8_t)res;
}
@ -2547,10 +2547,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_i16(int16_t a, int16_
*result = a + b;
break;
case GUF_MATH_CKD_OVERFLOW_POS:
*result = (a + INT16_MIN) + (b + INT16_MIN);
*result = (int16_t)( (a + (int16_t)INT16_MIN) + (b + (int16_t)INT16_MIN) );
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
*result = (a - INT16_MIN) + (b - INT16_MIN);
*result = (int16_t)( (a - (int16_t)INT16_MIN) + (b - (int16_t)INT16_MIN) );
break;
default:
GUF_ASSERT(false);
@ -2568,11 +2568,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_i16(int16_t a, int16_
break;
case GUF_MATH_CKD_OVERFLOW_POS:
GUF_ASSERT(b < 0);
*result = (a + INT16_MIN) - (b - INT16_MIN); // TODO: not sure
*result = (int16_t)( (a + (int16_t)INT16_MIN) - (b - (int16_t)INT16_MIN) ); // TODO: not sure
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
GUF_ASSERT(b > 0);
*result = (a - INT16_MIN) - (b + INT16_MIN); // TODO: not sure
*result = (int16_t)( (a - (int16_t)INT16_MIN) - (b + (int16_t)INT16_MIN) ); // TODO: not sure
break;
default:
GUF_ASSERT(false);
@ -2595,7 +2595,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_i16(int16_t a, int16_
const uint16_t mod = (uint16_t)INT16_MAX + 1u;
GUF_ASSERT(mod > 0);
res = 1u * res % mod;
*result = INT16_MIN + (int16_t)res;
*result = (int16_t)INT16_MIN + (int16_t)res;
} else {
*result = (int16_t)res;
}
@ -2680,10 +2680,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_i32(int32_t a, int32_
*result = a + b;
break;
case GUF_MATH_CKD_OVERFLOW_POS:
*result = (a + INT32_MIN) + (b + INT32_MIN);
*result = (int32_t)( (a + (int32_t)INT32_MIN) + (b + (int32_t)INT32_MIN) );
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
*result = (a - INT32_MIN) + (b - INT32_MIN);
*result = (int32_t)( (a - (int32_t)INT32_MIN) + (b - (int32_t)INT32_MIN) );
break;
default:
GUF_ASSERT(false);
@ -2701,11 +2701,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_i32(int32_t a, int32_
break;
case GUF_MATH_CKD_OVERFLOW_POS:
GUF_ASSERT(b < 0);
*result = (a + INT32_MIN) - (b - INT32_MIN); // TODO: not sure
*result = (int32_t)( (a + (int32_t)INT32_MIN) - (b - (int32_t)INT32_MIN) ); // TODO: not sure
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
GUF_ASSERT(b > 0);
*result = (a - INT32_MIN) - (b + INT32_MIN); // TODO: not sure
*result = (int32_t)( (a - (int32_t)INT32_MIN) - (b + (int32_t)INT32_MIN) ); // TODO: not sure
break;
default:
GUF_ASSERT(false);
@ -2728,7 +2728,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_i32(int32_t a, int32_
const uint32_t mod = (uint32_t)INT32_MAX + 1u;
GUF_ASSERT(mod > 0);
res = 1u * res % mod;
*result = INT32_MIN + (int32_t)res;
*result = (int32_t)INT32_MIN + (int32_t)res;
} else {
*result = (int32_t)res;
}
@ -2813,10 +2813,10 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_add_i64(int64_t a, int64_
*result = a + b;
break;
case GUF_MATH_CKD_OVERFLOW_POS:
*result = (a + INT64_MIN) + (b + INT64_MIN);
*result = (int64_t)( (a + (int64_t)INT64_MIN) + (b + (int64_t)INT64_MIN) );
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
*result = (a - INT64_MIN) + (b - INT64_MIN);
*result = (int64_t)( (a - (int64_t)INT64_MIN) + (b - (int64_t)INT64_MIN) );
break;
default:
GUF_ASSERT(false);
@ -2834,11 +2834,11 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_sub_i64(int64_t a, int64_
break;
case GUF_MATH_CKD_OVERFLOW_POS:
GUF_ASSERT(b < 0);
*result = (a + INT64_MIN) - (b - INT64_MIN); // TODO: not sure
*result = (int64_t)( (a + (int64_t)INT64_MIN) - (b - (int64_t)INT64_MIN) ); // TODO: not sure
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
GUF_ASSERT(b > 0);
*result = (a - INT64_MIN) - (b + INT64_MIN); // TODO: not sure
*result = (int64_t)( (a - (int64_t)INT64_MIN) - (b + (int64_t)INT64_MIN) ); // TODO: not sure
break;
default:
GUF_ASSERT(false);
@ -2861,7 +2861,7 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_i64(int64_t a, int64_
const uint64_t mod = (uint64_t)INT64_MAX + 1u;
GUF_ASSERT(mod > 0);
res = 1u * res % mod;
*result = INT64_MIN + (int64_t)res;
*result = (int64_t)INT64_MIN + (int64_t)res;
} else {
*result = (int64_t)res;
}
@ -3957,3 +3957,4 @@ GUF_MATH_CKDINT_KWRDS guf_math_ckd_result guf_wrapping_mul_u64(uint64_t a, uint6
#undef GUF_MATH_CKDINT_KWRDS
#undef GUF_MATH_CKDINT_IMPL
#undef GUF_MATH_CKDINT_IMPL_STATIC

View File

@ -345,7 +345,7 @@ GUF_RAND_KWRDS uint_least64_t guf_rand32_u64(guf_rand32_state *state)
GUF_ASSERT(state->s[0] || state->s[1] || state->s[2] || state->s[3]);
const uint_least32_t lower_bits = guf_rand32_u32(state);
const uint_least32_t upper_bits = guf_rand32_u32(state);
GUF_ASSERT( lower_bits <= GUF_UINT32_MAX && upper_bits <= GUF_UINT32_MAX );
//GUF_ASSERT( lower_bits <= GUF_UINT32_MAX && upper_bits <= GUF_UINT32_MAX );
GUF_ASSERT( ( ((uint_least64_t)upper_bits << 32u) | (uint_least64_t)lower_bits ) <= GUF_UINT32_MAX);
return ((uint_least64_t)upper_bits << 32u) | (uint_least64_t)lower_bits; // TODO: not sure if that's a good idea...
@ -443,31 +443,31 @@ GUF_RAND_KWRDS void guf_randstate_jump(guf_randstate *state)
GUF_RAND_KWRDS double guf_rand64_f64(guf_rand64_state *state)
{
// cf. https://prng.di.unimi.it/ and https://dotat.at/@/2023-06-23-random-double.html (last-retrieved 2025-02-11)
return (guf_rand64_u64(state) >> 11u) * 0x1.0p-53; // 11 == 64 - 53 (double has a 53-bit mantissa/significand)
return (double)(guf_rand64_u64(state) >> 11u) * 0x1.0p-53; // 11 == 64 - 53 (double has a 53-bit mantissa/significand)
}
GUF_RAND_KWRDS double guf_rand32_f64(guf_rand32_state *state)
{
// cf. https://prng.di.unimi.it/ and https://dotat.at/@/2023-06-23-random-double.html (last-retrieved 2025-02-11)
return (guf_rand32_u64(state) >> 11u) * 0x1.0p-53; // 11 == 64 - 53 (double has a 53-bit mantissa/significand)
return (double)(guf_rand32_u64(state) >> 11u) * 0x1.0p-53; // 11 == 64 - 53 (double has a 53-bit mantissa/significand)
}
// Generate double in the unit interval [0, 1)
GUF_RAND_KWRDS double guf_rand_f64(guf_randstate *state)
{
// cf. https://prng.di.unimi.it/ and https://dotat.at/@/2023-06-23-random-double.html (last-retrieved 2025-02-11)
return (guf_rand_u64(state) >> 11u) * 0x1.0p-53; // 11 == 64 - 53 (double has a 53-bit mantissa/significand)
return (double)(guf_rand_u64(state) >> 11u) * 0x1.0p-53; // 11 == 64 - 53 (double has a 53-bit mantissa/significand)
}
GUF_RAND_KWRDS float guf_rand64_f32(guf_rand64_state *state)
{
return (guf_rand64_u64(state) >> 40u) * 0x1.0p-24f; // 40 == 64 - 24; (float has a 24-bit mantissa/significand)
return (float)(guf_rand64_u64(state) >> 40u) * 0x1.0p-24f; // 40 == 64 - 24; (float has a 24-bit mantissa/significand)
}
GUF_RAND_KWRDS float guf_rand32_f32(guf_rand32_state *state)
{
return (guf_rand32_u32(state) >> 8u) * 0x1.0p-24f; // 8 == 32 - 24; (float has a 24-bit mantissa/significand)
return (float)(guf_rand32_u32(state) >> 8u) * 0x1.0p-24f; // 8 == 32 - 24; (float has a 24-bit mantissa/significand)
}
// Generate float in the unit interval [0, 1)
@ -684,7 +684,7 @@ GUF_RAND_KWRDS int_least32_t guf_rand32_range_i32(guf_rand32_state *state, int_l
const int_least32_t rnd = min + (int_least32_t)step;
GUF_ASSERT(rnd >= min && rnd <= max);
GUF_ASSERT(rnd <= GUF_INT32_MAX && rnd >= GUF_INT32_MIN);
//GUF_ASSERT(rnd <= GUF_INT32_MAX && rnd >= GUF_INT32_MIN);
return rnd;
}

View File

@ -77,7 +77,7 @@ typedef struct guf_str_tok_state {
#define GUF_CSTR_TO_VIEW_CPP(CSTR) guf_str_view {.str = (CSTR), .len = (ptrdiff_t)strlen(CSTR)}
#define GUF_CSTR_LIT_TO_VIEW_CPP(CSTR) guf_str_view {.str = (CSTR), .len = (ptrdiff_t)sizeof(CSTR) - 1}
#define GUF_STR_UNINITIALISED_CPP guf_str{.data = {0}, .allocator = NULL}
#define GUF_STR_UNINITIALISED_CPP guf_str{{0, 0, NULL}, 0}
#endif
// 1.) guf_str_view:
@ -1200,7 +1200,7 @@ GUF_STR_KWRDS guf_str *guf_str_append_u64(guf_str *str, uint_least64_t n) {
int num_digits = 0;
do {
GUF_ASSERT(start_idx > 0);
char c = (n % 10) + '0';
char c = (char)( (n % 10) + '0' );
buf[--start_idx] = c;
++num_digits;
} while ((n = n / 10));

View File

@ -113,15 +113,15 @@ GUF_UTF8_KWRDS bool guf_utf8_encode(guf_utf8_char *result, uint_least32_t cp)
first_byte_bits = 7;
} else if (cp >= 0x80 && cp <= 0x7FF) { // binary: 110x.xxxx 10xx.xxxx
num_bytes = 2;
result->bytes[0] = 0xC0;
result->bytes[0] = (char)0xC0;
first_byte_bits = 5;
} else if (cp >= 0x800 && cp <= 0xFFFF) { // binary: 1110.xxxx 10xx.xxxx 10xx.xxxx
num_bytes = 3;
result->bytes[0] = 0xE0;
result->bytes[0] = (char)0xE0;
first_byte_bits = 4;
} else if (cp >= 0x10000 && cp <= 0x10FFFF) { // binary: 1111.0xxx 10xx.xxxx 10xx.xxxx 10xx.xxxx
num_bytes = 4;
result->bytes[0] = 0xF0;
result->bytes[0] = (char)0xF0;
first_byte_bits = 3;
}
@ -131,7 +131,7 @@ GUF_UTF8_KWRDS bool guf_utf8_encode(guf_utf8_char *result, uint_least32_t cp)
}
for (int i = 1; i < num_bytes; ++i) {
result->bytes[i] = 0x80; // binary: 10xx.xxxx
result->bytes[i] = (char)0x80; // binary: 10xx.xxxx
}
const int tail_byte_bits = 6;
@ -288,7 +288,7 @@ GUF_UTF8_KWRDS bool guf_utf8_char_is_valid(const guf_utf8_char *c)
for (int i = 0; i < num_bytes; ++i) {
// "The octet values C0, C1, F5 to FF never appear.", cf. https://www.rfc-editor.org/rfc/rfc3629#page-5
if (bytes[i] == 0xC0 || bytes[i] == 0xC1 || (bytes[i] >= 0xF5 && bytes[i] <= 0xFF)) {
if (bytes[i] == 0xC0 || bytes[i] == 0xC1 || (bytes[i] >= 0xF5)) {
return false;
}
}

View File

@ -113,7 +113,7 @@ int main(void)
floats = dbuf_float_new(&allocator);
for (int i = 0; i <= 16; ++i) {
dbuf_float_push_val(&floats, i % 2 ? i * -2.f : i * 2.f);
dbuf_float_push_val(&floats, i % 2 ? (float)i * -2.f : (float)i * 2.f);
}
// float *tmp = test_allocator.alloc(floats.size * sizeof(float), &test_allocator_ctx);

View File

@ -3,7 +3,7 @@
struct CkdIntTest : public Test
{
CkdIntTest(const std::string& name) : Test(name) {};
CkdIntTest(const std::string& nm) : Test(nm) {};
void run() override;
private:

View File

@ -581,7 +581,7 @@ void DbufStrTest::test_push_insert_erase(size_t n, ptrdiff_t start_cap)
for (size_t i = 0; i < n; ++i) {
std::string str;
for (size_t c = 0; c < 512 + GUF_STR_SSO_BUF_CAP; ++c) {
str += c % 10 + '0';
str += (char)(c % 10 + '0');
}
const guf_str_view sv_long = guf_str_view{.str = str.data(), .len = (ptrdiff_t)str.size()};
const guf_str_view sv_short = guf_str_view{.str = str.data(), .len = (ptrdiff_t)GUF_STR_SSO_BUF_CAP - 1};
@ -642,7 +642,7 @@ void DbufStrTest::test_push_insert_erase(size_t n, ptrdiff_t start_cap)
std::string str;
for (size_t c = 0; c < 512 + GUF_STR_SSO_BUF_CAP; ++c) {
str += c % 10 + '0';
str += (char)(c % 10 + '0');
}
const guf_str_view sv_long = guf_str_view{.str = str.data(), .len = (ptrdiff_t)str.size()};
const guf_str_view sv_short = guf_str_view{.str = str.data(), .len = (ptrdiff_t)GUF_STR_SSO_BUF_CAP - 1};

View File

@ -10,7 +10,7 @@ extern "C"
struct DbufIntTest : public Test
{
DbufIntTest(const std::string& name) : Test(name)
DbufIntTest(const std::string& nm) : Test(nm)
{
allocator_ctx.zero_init = false;
guf_alloc_tracker_init(&allocator_ctx.tracker, 1, "DbufIntTest_allocator", NULL, NULL);
@ -31,7 +31,7 @@ private:
struct DbufCstringTest : public Test
{
DbufCstringTest(std::string name) : Test(name)
DbufCstringTest(std::string nm) : Test(nm)
{
allocator_ctx.zero_init = false;
guf_alloc_tracker_init(&allocator_ctx.tracker, 2, "DbufCstringTest_allocator", NULL, NULL);
@ -52,7 +52,7 @@ private:
struct DbufStrTest : public Test
{
DbufStrTest(std::string name) : Test(name)
DbufStrTest(std::string nm) : Test(nm)
{
allocator_ctx.zero_init = false;
guf_alloc_tracker_init(&allocator_ctx.tracker, 3, "DbufStrTest_allocator", NULL, NULL);

View File

@ -12,7 +12,7 @@ extern "C"
struct DictSvToIntTest : public Test
{
DictSvToIntTest(const std::string& name) : Test(name)
DictSvToIntTest(const std::string& nm) : Test(nm)
{
allocator_ctx.zero_init = false;
guf_alloc_tracker_init(&allocator_ctx.tracker, 3, "DictSvToIntTest_allocator", NULL, NULL);

View File

@ -11,7 +11,7 @@ extern "C"
struct StrTest : public Test
{
StrTest(const std::string& name) : Test(name)
StrTest(const std::string& nm) : Test(nm)
{
allocator_ctx.zero_init = false;
guf_alloc_tracker_init(&allocator_ctx.tracker, 4, "StrTest_allocator", NULL, NULL);

View File

@ -9,7 +9,7 @@ extern "C"
struct UTF8Test : public Test
{
UTF8Test(const std::string& name) : Test(name)
UTF8Test(const std::string& nm) : Test(nm)
{
allocator_ctx.zero_init = false;
guf_alloc_tracker_init(&allocator_ctx.tracker, 5, "UTF8Test_allocator", NULL, NULL);

View File

@ -223,10 +223,10 @@ def generate_ckdint_functions(int_types: list, uint_types: list) -> Tuple[str, s
*result = a + b;
break;
case GUF_MATH_CKD_OVERFLOW_POS:
*result = (a + {int_min}) + (b + {int_min});
*result = ({type})( (a + ({type}){int_min}) + (b + ({type}){int_min}) );
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
*result = (a - {int_min}) + (b - {int_min});
*result = ({type})( (a - ({type}){int_min}) + (b - ({type}){int_min}) );
break;
default:
GUF_ASSERT(false);
@ -244,11 +244,11 @@ def generate_ckdint_functions(int_types: list, uint_types: list) -> Tuple[str, s
break;
case GUF_MATH_CKD_OVERFLOW_POS:
GUF_ASSERT(b < 0);
*result = (a + {int_min}) - (b - {int_min}); // TODO: not sure
*result = ({type})( (a + ({type}){int_min}) - (b - ({type}){int_min}) ); // TODO: not sure
break;
case GUF_MATH_CKD_OVERFLOW_NEG:
GUF_ASSERT(b > 0);
*result = (a - {int_min}) - (b + {int_min}); // TODO: not sure
*result = ({type})( (a - ({type}){int_min}) - (b + ({type}){int_min}) ); // TODO: not sure
break;
default:
GUF_ASSERT(false);
@ -271,7 +271,7 @@ def generate_ckdint_functions(int_types: list, uint_types: list) -> Tuple[str, s
const {uint_type} mod = ({uint_type}){int_max} + 1u;
GUF_ASSERT(mod > 0);
res = 1u * res % mod;
*result = {int_min} + ({type})res;
*result = ({type}){int_min} + ({type})res;
}} else {{
*result = ({type})res;
}}