Moar attempt to fix bloody MSVC intrinsic mess...
authorBastien Montagne <montagne29@wanadoo.fr>
Thu, 23 Nov 2017 15:58:20 +0000 (16:58 +0100)
committerBastien Montagne <montagne29@wanadoo.fr>
Thu, 23 Nov 2017 15:58:20 +0000 (16:58 +0100)
intern/atomic/intern/atomic_ops_msvc.h

index 5e83675f815415ffc391c78f7fc453bacab95af4..c24a909573536088d75b2cf8ad39eea3b6d31025 100644 (file)
@@ -132,12 +132,12 @@ ATOMIC_INLINE uint32_t atomic_fetch_and_and_uint32(uint32_t *p, uint32_t x)
 /* Signed */
 ATOMIC_INLINE int32_t atomic_add_and_fetch_int32(int32_t *p, int32_t x)
 {
-       return InterlockedExchangeAdd(p, x) + x;
+       return InterlockedExchangeAdd((long *)p, x) + x;
 }
 
 ATOMIC_INLINE int32_t atomic_sub_and_fetch_int32(int32_t *p, int32_t x)
 {
-       return InterlockedExchangeAdd(p, -x) - x;
+       return InterlockedExchangeAdd((long *)p, -x) - x;
 }
 
 ATOMIC_INLINE int32_t atomic_cas_int32(int32_t *v, int32_t old, int32_t _new)
@@ -147,7 +147,7 @@ ATOMIC_INLINE int32_t atomic_cas_int32(int32_t *v, int32_t old, int32_t _new)
 
 ATOMIC_INLINE int32_t atomic_fetch_and_add_int32(int32_t *p, int32_t x)
 {
-       return InterlockedExchangeAdd(p, x);
+       return InterlockedExchangeAdd((long *)p, x);
 }
 
 ATOMIC_INLINE int32_t atomic_fetch_and_or_int32(int32_t *p, int32_t x)