From 81bbfab5dfa33bf251ed519dde30128f39e7a3f9 Mon Sep 17 00:00:00 2001 From: Jesse Natalie Date: Fri, 8 Jul 2022 12:29:41 -0700 Subject: [PATCH] u_atomic: Fix MSVC p_atomic_add_return MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit InterlockedExchangeAdd returns the *old* value, not the new one Cc: mesa-stable Reviewed-by: Yonggang Luo Reviewed-by: Marek Olšák Part-of: --- src/util/u_atomic.h | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/util/u_atomic.h b/src/util/u_atomic.h index f9570e89236..16dccd234d1 100644 --- a/src/util/u_atomic.h +++ b/src/util/u_atomic.h @@ -153,10 +153,8 @@ ((void) p_atomic_add_return((_v), (_i))) #define p_atomic_add_return(_v, _i) (\ - sizeof *(_v) == sizeof(char) ? _InterlockedExchangeAdd8 ((char *) (_v), (_i)) : \ - sizeof *(_v) == sizeof(short) ? _InterlockedExchangeAdd16((short *) (_v), (_i)) : \ - sizeof *(_v) == sizeof(long) ? _InterlockedExchangeAdd ((long *) (_v), (_i)) : \ - sizeof *(_v) == sizeof(__int64) ? InterlockedExchangeAdd64((__int64 *)(_v), (_i)) : \ + sizeof *(_v) == sizeof(long) ? InterlockedAdd ((long *) (_v), (_i)) : \ + sizeof *(_v) == sizeof(__int64) ? InterlockedAdd64((__int64 *)(_v), (_i)) : \ (assert(!"should not get here"), 0)) #define p_atomic_cmpxchg(_v, _old, _new) (\