From 2728a0a90e37c82eb285448e9dec54b304cc9cee Mon Sep 17 00:00:00 2001 From: Charlie Tonneslan Date: Fri, 20 Mar 2026 14:27:55 -0400 Subject: [PATCH] fix: replace C-style casts with static_cast/reinterpret_cast Replace C-style casts that break compilation with -Wold-style-cast -Werror on GCC 14/15 and Clang 17/18 with C++17/20/23. Files changed: - lightweightsemaphore.h: (time_t), (long), (int) -> static_cast - blockingconcurrentqueue.h: (int), (BlockingConcurrentQueue*) -> static_cast/reinterpret_cast Fixes #444 --- blockingconcurrentqueue.h | 8 ++++---- lightweightsemaphore.h | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/blockingconcurrentqueue.h b/blockingconcurrentqueue.h index 205a4db7..8ed20eda 100644 --- a/blockingconcurrentqueue.h +++ b/blockingconcurrentqueue.h @@ -56,18 +56,18 @@ class BlockingConcurrentQueue // includes making the memory effects of construction visible, possibly with a // memory barrier). explicit BlockingConcurrentQueue(size_t capacity = 6 * BLOCK_SIZE) - : inner(capacity), sema(create(0, (int)Traits::MAX_SEMA_SPINS), &BlockingConcurrentQueue::template destroy) + : inner(capacity), sema(create(0, static_cast(Traits::MAX_SEMA_SPINS)), &BlockingConcurrentQueue::template destroy) { - assert(reinterpret_cast((BlockingConcurrentQueue*)1) == &((BlockingConcurrentQueue*)1)->inner && "BlockingConcurrentQueue must have ConcurrentQueue as its first member"); + assert(reinterpret_cast(reinterpret_cast(1)) == &reinterpret_cast(1)->inner && "BlockingConcurrentQueue must have ConcurrentQueue as its first member"); if (!sema) { MOODYCAMEL_THROW(std::bad_alloc()); } } BlockingConcurrentQueue(size_t minCapacity, size_t maxExplicitProducers, size_t maxImplicitProducers) - : inner(minCapacity, maxExplicitProducers, maxImplicitProducers), sema(create(0, (int)Traits::MAX_SEMA_SPINS), &BlockingConcurrentQueue::template destroy) + : inner(minCapacity, maxExplicitProducers, maxImplicitProducers), sema(create(0, static_cast(Traits::MAX_SEMA_SPINS)), &BlockingConcurrentQueue::template destroy) { - assert(reinterpret_cast((BlockingConcurrentQueue*)1) == &((BlockingConcurrentQueue*)1)->inner && "BlockingConcurrentQueue must have ConcurrentQueue as its first member"); + assert(reinterpret_cast(reinterpret_cast(1)) == &reinterpret_cast(1)->inner && "BlockingConcurrentQueue must have ConcurrentQueue as its first member"); if (!sema) { MOODYCAMEL_THROW(std::bad_alloc()); } diff --git a/lightweightsemaphore.h b/lightweightsemaphore.h index 3ae8100d..34bbea1f 100644 --- a/lightweightsemaphore.h +++ b/lightweightsemaphore.h @@ -234,8 +234,8 @@ class Semaphore #else clock_gettime(CLOCK_REALTIME, &ts); #endif - ts.tv_sec += (time_t)(usecs / usecs_in_1_sec); - ts.tv_nsec += (long)(usecs % usecs_in_1_sec) * 1000; + ts.tv_sec += static_cast(usecs / usecs_in_1_sec); + ts.tv_nsec += static_cast(usecs % usecs_in_1_sec) * 1000; // sem_timedwait bombs if you have more than 1e9 in tv_nsec // so we have to clean things up before passing it in if (ts.tv_nsec >= nsecs_in_1_sec) { @@ -425,7 +425,7 @@ class LightweightSemaphore ssize_t toRelease = -oldCount < count ? -oldCount : count; if (toRelease > 0) { - m_sema.signal((int)toRelease); + m_sema.signal(static_cast(toRelease)); } }