From a84e70acd0dccc4edf0ff6a02ad9e69f4ca121de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Mon, 28 Jan 2019 21:29:56 +0100 Subject: [PATCH] Fix copy&paste error in the atomic_fetch_add_explicit{32,64} macros. - InterlockedExchange was incorrectly used in place where InterlockedExchangeAdd should have been used --- lib/isc/win32/include/isc/stdatomic.h | 32 +++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/isc/win32/include/isc/stdatomic.h b/lib/isc/win32/include/isc/stdatomic.h index 1cb5deeb69..b576d99f59 100644 --- a/lib/isc/win32/include/isc/stdatomic.h +++ b/lib/isc/win32/include/isc/stdatomic.h @@ -59,21 +59,21 @@ typedef uint_fast64_t volatile atomic_uint_fast64_t; #define atomic_store_explicit32(obj, desired, order) \ (order == memory_order_relaxed \ - ? InterlockedExchangeNoFence((atomic_int_fast32_t *)obj, desired) \ + ? (void)InterlockedExchangeNoFence((atomic_int_fast32_t *)obj, desired) \ : (order == memory_order_acquire \ - ? InterlockedExchangeAcquire((atomic_int_fast32_t *)obj, desired) \ - : InterlockedExchange((atomic_int_fast32_t *)obj, desired))) + ? (void)InterlockedExchangeAcquire((atomic_int_fast32_t *)obj, desired) \ + : (void)InterlockedExchange((atomic_int_fast32_t *)obj, desired))) #ifdef _WIN64 #define atomic_store_explicit64(obj, desired, order) \ (order == memory_order_relaxed \ - ? InterlockedExchangeNoFence64((atomic_int_fast64_t *)obj, desired) \ + ? (void)InterlockedExchangeNoFence64((atomic_int_fast64_t *)obj, desired) \ : (order == memory_order_acquire \ - ? InterlockedExchangeAcquire64((atomic_int_fast64_t *)obj, desired) \ - : InterlockedExchange64((atomic_int_fast64_t *)obj, desired))) + ? (void)InterlockedExchangeAcquire64((atomic_int_fast64_t *)obj, desired) \ + : (void)InterlockedExchange64((atomic_int_fast64_t *)obj, desired))) #else #define atomic_store_explicit64(obj, desired, order) \ - InterlockedExchange64((atomic_int_fast64_t *)obj, desired) + (void)InterlockedExchange64((atomic_int_fast64_t *)obj, desired) #endif static inline @@ -84,9 +84,9 @@ atomic_store_abort() { } #define atomic_store_explicit(obj, desired, order) \ - (sizeof(*obj) == 8 \ + (sizeof(*(obj)) == 8 \ ? atomic_store_explicit64(obj, desired, order) \ - : (sizeof(*obj) == 4 \ + : (sizeof(*(obj)) == 4 \ ? atomic_store_explicit32(obj, desired, order) \ : atomic_store_abort())) @@ -124,7 +124,7 @@ atomic_load_abort() { } #define atomic_load_explicit(obj, order) \ - (sizeof(*obj) == 8 \ + (sizeof(*(obj)) == 8 \ ? atomic_load_explicit64(obj, order) \ : (sizeof(*obj == 4) \ ? atomic_load_explicit32(obj, order) \ @@ -140,7 +140,7 @@ atomic_load_abort() { ? InterlockedExchangeAddAcquire((atomic_int_fast32_t *)obj, arg) \ : (order == memory_order_release \ ? InterlockedExchangeAddRelease((atomic_int_fast32_t *)obj, arg) \ - : InterlockedExchange((atomic_int_fast32_t *)obj, arg)))) + : InterlockedExchangeAdd((atomic_int_fast32_t *)obj, arg)))) #ifdef _WIN64 #define atomic_fetch_add_explicit64(obj, arg, order) \ @@ -150,7 +150,7 @@ atomic_load_abort() { ? InterlockedExchangeAddAcquire64((atomic_int_fast64_t *)obj, arg) \ : (order == memory_order_release \ ? InterlockedExchangeAddRelease64((atomic_int_fast64_t *)obj, arg) \ - : InterlockedExchange64((atomic_int_fast64_t *)obj, arg)))) + : InterlockedExchangeAdd64((atomic_int_fast64_t *)obj, arg)))) #else #define atomic_fetch_add_explicit64(obj, arg, order) \ InterlockedExchange64((atomic_int_fast64_t *)obj, arg) @@ -164,9 +164,9 @@ atomic_add_abort() { } #define atomic_fetch_add_explicit(obj, arg, order) \ - (sizeof(*obj) == 8 \ + (sizeof(*(obj)) == 8 \ ? atomic_fetch_add_explicit64(obj, arg, order) \ - : (sizeof(*obj) == 4 \ + : (sizeof(*(obj)) == 4 \ ? atomic_fetch_add_explicit32(obj, arg, order) \ : atomic_add_abort())) @@ -252,11 +252,11 @@ atomic_compare_exchange_abort() { #define atomic_compare_exchange_strong_explicit(obj, expected, desired, \ succ, fail) \ - (sizeof(*obj) == 8 \ + (sizeof(*(obj)) == 8 \ ? atomic_compare_exchange_strong_explicit64(obj, expected, \ desired, \ succ, fail) \ - : (sizeof(*obj) == 4 \ + : (sizeof(*(obj)) == 4 \ ? atomic_compare_exchange_strong_explicit32(obj, expected, \ desired, \ succ, fail) \