From 11b30976731eafe34b7f77824f50483cd56e12eb Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer Date: Tue, 9 Jun 2026 15:08:25 +0200 Subject: [PATCH 1/2] Fix bsearch usage with C23 C23 made bsearch a const-preserving type-generic macro. --- src/utf8.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/utf8.c b/src/utf8.c index 48697c77d..be252e7e1 100644 --- a/src/utf8.c +++ b/src/utf8.c @@ -242,9 +242,9 @@ void cmark_utf8proc_case_fold(cmark_strbuf *dest, const uint8_t *str, cmark_strbuf_put(dest, str, char_len); } else if (char_len >= 0) { uint32_t key = c; - uint32_t *entry = bsearch(&key, cf_table, - CF_TABLE_SIZE, sizeof(uint32_t), - cf_compare); + const uint32_t *entry = bsearch(&key, cf_table, + CF_TABLE_SIZE, sizeof(uint32_t), + cf_compare); if (entry == NULL) { cmark_strbuf_put(dest, str, char_len); } else { From b7192530883da941d3b1b7696e2b6cb890ee1b43 Mon Sep 17 00:00:00 2001 From: Nick Wellnhofer Date: Tue, 9 Jun 2026 15:18:25 +0200 Subject: [PATCH 2/2] Compile with latest supported C standard Use latest C standard known to CMake. Remove CMAKE_C_STANDARD_REQUIRED to fall back to earlier versions. AFAIK, there's no way to set the minimum required version. But since we support C99 and it's unlikely that CMake supports C89-only compilers, this shouldn't be a problem. --- CMakeLists.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 813f632f7..5a5dccac1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,8 +4,11 @@ project(cmark LANGUAGES C CXX VERSION 0.31.2) -set(CMAKE_C_STANDARD 99) -set(CMAKE_C_STANDARD_REQUIRED YES) +if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.21) + set(CMAKE_C_STANDARD 23) +else() + set(CMAKE_C_STANDARD 11) +endif() set(CMAKE_C_EXTENSIONS NO) if(CMAKE_BUILD_TYPE STREQUAL Asan)