From 48b560140a73d6b33914ea0eea4df626c88238cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Lindel=C3=B6w?= Date: Sun, 5 Apr 2026 22:16:47 +0200 Subject: [PATCH 1/2] Enable warnings as errors in CI --- .github/workflows/ci.yml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c983788..bc967a8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -69,13 +69,13 @@ jobs: - name: Build x86 run: | $env:PATH += ";C:\Program Files (x86)\GnuWin32\bin" - cmake -G "Visual Studio 17 2022" -A "win32" -B build32 -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake -G "Visual Studio 17 2022" -A "win32" -B build32 -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=ON cmake --build build32 --target ALL_BUILD --config Debug cmake --build build32 --target ALL_BUILD --config Release - name: Build x64 run: | $env:PATH += ";C:\Program Files (x86)\GnuWin32\bin" - cmake -G "Visual Studio 17 2022" -A "x64" -B build64 -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake -G "Visual Studio 17 2022" -A "x64" -B build64 -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=ON cmake --build build64 --target ALL_BUILD --config Debug cmake --build build64 --target ALL_BUILD --config Release - name: Collect artifacts @@ -104,7 +104,7 @@ jobs: run: | apk add cmake g++ ninja m4 linux-headers mkdir build && cd build - cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF -DCMAKE_EXE_LINKER_FLAGS=-static + cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=ON -DCMAKE_EXE_LINKER_FLAGS=-static cmake --build . mv ./tests/tests ./tests_linux_musl_x86_64 mv ./tests/tests_header_only ./tests_header_only_linux_musl_x86_64 @@ -127,7 +127,7 @@ jobs: i386/alpine:3.23.3 sh -c ' apk add cmake g++ ninja m4 linux-headers && mkdir build && cd build && - cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF -DCMAKE_EXE_LINKER_FLAGS=-static && + cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=ON -DCMAKE_EXE_LINKER_FLAGS=-static && cmake --build . && mv ./tests/tests ./tests_linux_musl_x86 && mv ./tests/tests_header_only ./tests_header_only_linux_musl_x86 @@ -146,7 +146,7 @@ jobs: - name: Build run: | mkdir build && cd build - cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=ON cmake --build . mv ./tests/tests ./tests_linux_glibc_x86_64 mv ./tests/tests_header_only ./tests_header_only_linux_glibc_x86_64 @@ -169,7 +169,7 @@ jobs: i386/debian:bookworm sh -c ' apt-get update && apt-get install -y cmake ninja-build g++ m4 && mkdir build && cd build && - cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF && + cmake -G "Ninja" ../ -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=ON && cmake --build . && mv ./tests/tests ./tests_linux_glibc_x86 && mv ./tests/tests_header_only ./tests_header_only_linux_glibc_x86 @@ -189,7 +189,7 @@ jobs: run: | sudo apt-get update && sudo apt-get install -y gcc-mingw-w64-x86-64-posix g++-mingw-w64-x86-64-posix mkdir build && cd build - cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x64_winxp.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x64_winxp.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=ON cmake --build . mv ./tests/tests.exe ./tests_mingw_x64_winxp.exe mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x64_winxp.exe @@ -208,7 +208,7 @@ jobs: run: | sudo apt-get update && sudo apt-get install -y gcc-mingw-w64-i686-posix g++-mingw-w64-i686-posix mkdir build && cd build - cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86_winxp.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86_winxp.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=ON cmake --build . mv ./tests/tests.exe ./tests_mingw_x86_winxp.exe mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x86_winxp.exe @@ -228,7 +228,7 @@ jobs: run: | apk add cmake mingw-w64-gcc ninja m4 mkdir build && cd build - cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x64_winblue.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x64_winblue.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=ON cmake --build . mv ./tests/tests.exe ./tests_mingw_x64_winblue.exe mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x64_winblue.exe @@ -251,7 +251,7 @@ jobs: i386/alpine:3.23.3 sh -c ' apk add cmake mingw-w64-gcc ninja m4 && mkdir build && cd build && - cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86_winblue.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF && + cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86_winblue.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=ON && cmake --build . && mv ./tests/tests.exe ./tests_mingw_x86_winblue.exe && mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x86_winblue.exe @@ -271,7 +271,7 @@ jobs: run: | sudo apt-get update && sudo apt-get install -y gcc-mingw-w64-i686-posix g++-mingw-w64-i686-posix mkdir build && cd build - cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86_win2k.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=OFF + cmake -G "Ninja" ../ -DCMAKE_TOOLCHAIN_FILE="../toolchain_mingw_x86_win2k.cmake" -DCMAKE_VERBOSE_MAKEFILE=ON -DTCS_ENABLE_TESTS=ON -DTCS_ENABLE_EXAMPLES=ON -DTCS_WARNINGS_AS_ERRORS=ON cmake --build . mv ./tests/tests.exe ./tests_mingw_x86_win2k.exe mv ./tests/tests_header_only.exe ./tests_header_only_mingw_x86_win2k.exe From d9324139c2cf80564071b7074733bf48d8353ca5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20Lindel=C3=B6w?= Date: Sun, 5 Apr 2026 22:17:07 +0200 Subject: [PATCH 2/2] Fix sign-conversion warning and extra semicolon --- include/tinycsocket.h | 11 ++++++++++- src/tinycsocket_common.c | 2 +- src/tinycsocket_posix.c | 1 + src/tinycsocket_win32.c | 8 ++++++++ tests/tests.cpp | 2 +- 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/include/tinycsocket.h b/include/tinycsocket.h index 4ed150c..a6fe3f4 100644 --- a/include/tinycsocket.h +++ b/include/tinycsocket.h @@ -3306,6 +3306,7 @@ TcsResult tcs_sendv(TcsSocket socket_ctx, // buffer_count is already validated against UIO_MAXIOV above. #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wsign-conversion" msg.msg_iovlen = buffer_count; #pragma GCC diagnostic pop msg.msg_control = NULL; @@ -4892,7 +4893,15 @@ TcsResult tcs_sendv(TcsSocket socket_ctx, free(heap_buffers); return TCS_ERROR_INVALID_ARGUMENT; } + // WSABUF.buf is non-const by Windows API design, but WSASend does not modify the data. +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" +#endif native_buffers[i].buf = (CHAR*)buffers[i].data; +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif native_buffers[i].len = (ULONG)buffers[i].size; } @@ -7427,7 +7436,7 @@ TcsResult tcs_address_parse(const char str[], struct TcsAddress* out_address) break; } - ctx.state = next; + ctx.state = (uint8_t)next; if (*c != '\0') c++; } diff --git a/src/tinycsocket_common.c b/src/tinycsocket_common.c index 2907add..1ec931c 100644 --- a/src/tinycsocket_common.c +++ b/src/tinycsocket_common.c @@ -1337,7 +1337,7 @@ TcsResult tcs_address_parse(const char str[], struct TcsAddress* out_address) break; } - ctx.state = next; + ctx.state = (uint8_t)next; if (*c != '\0') c++; } diff --git a/src/tinycsocket_posix.c b/src/tinycsocket_posix.c index 6d4fec3..1e3fa1a 100644 --- a/src/tinycsocket_posix.c +++ b/src/tinycsocket_posix.c @@ -686,6 +686,7 @@ TcsResult tcs_sendv(TcsSocket socket_ctx, // buffer_count is already validated against UIO_MAXIOV above. #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wconversion" +#pragma GCC diagnostic ignored "-Wsign-conversion" msg.msg_iovlen = buffer_count; #pragma GCC diagnostic pop msg.msg_control = NULL; diff --git a/src/tinycsocket_win32.c b/src/tinycsocket_win32.c index b91cba3..0779221 100644 --- a/src/tinycsocket_win32.c +++ b/src/tinycsocket_win32.c @@ -609,7 +609,15 @@ TcsResult tcs_sendv(TcsSocket socket_ctx, free(heap_buffers); return TCS_ERROR_INVALID_ARGUMENT; } + // WSABUF.buf is non-const by Windows API design, but WSASend does not modify the data. +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wcast-qual" +#endif native_buffers[i].buf = (CHAR*)buffers[i].data; +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif native_buffers[i].len = (ULONG)buffers[i].size; } diff --git a/tests/tests.cpp b/tests/tests.cpp index 26cec8e..92e98fb 100644 --- a/tests/tests.cpp +++ b/tests/tests.cpp @@ -1349,7 +1349,7 @@ TEST_CASE("TdsList capacity hysteresis") CHECK(tds_ulist_best_capacity_fit(64, 16) == 16); } -TDS_ULIST_IMPL(int, int); +TDS_ULIST_IMPL(int, int) TEST_CASE("TdsUList create / destroy") {