From d42f0e5809964136911cbbd845bc423a8dfd5e31 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 10 Sep 2018 11:05:33 +0200 Subject: [PATCH] [atomic] Fix pointer type passed to InterlockedExchangeAdd() John Emmas reported on mailing list that build with MSVC is failing. Not sure why bots don't catch it, but this should fix. --- src/hb-atomic.hh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/hb-atomic.hh b/src/hb-atomic.hh index d494c89..6e3672c 100644 --- a/src/hb-atomic.hh +++ b/src/hb-atomic.hh @@ -98,7 +98,7 @@ static inline void _hb_memory_barrier (void) { #if !defined(MemoryBarrier) /* MinGW has a convoluted history of supporting MemoryBarrier. */ - long dummy = 0; + LONG dummy = 0; InterlockedExchange (&dummy, 1); #else MemoryBarrier (); @@ -106,7 +106,8 @@ static inline void _hb_memory_barrier (void) } #define _hb_memory_barrier() _hb_memory_barrier () -#define hb_atomic_int_impl_add(AI, V) InterlockedExchangeAdd ((unsigned *) (AI), (V)) +#define hb_atomic_int_impl_add(AI, V) InterlockedExchangeAdd ((LONG *) (AI), (V)) +static_assert ((sizeof (LONG) == sizeof (int)), ""); #define hb_atomic_ptr_impl_cmpexch(P,O,N) (InterlockedCompareExchangePointer ((void **) (P), (void *) (N), (void *) (O)) == (void *) (O)) -- 2.7.4