]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Fix typing on call to interlockedExchange for windows
authorNeil Horman <nhorman@openssl.org>
Fri, 26 Jul 2024 17:09:06 +0000 (13:09 -0400)
committerNeil Horman <nhorman@openssl.org>
Sun, 11 Aug 2024 12:23:19 +0000 (08:23 -0400)
mingw is complaining on builds about the use of InterlockedExchange on a
uint32_t type, as the input parameter here is expected to be LONG
(defined as signed 32 bit on all versions of windows).

the input value (reader_idx) will never grow larger than the group size
of the lock (nominally 2, but always a reasonably small value), so it
should be safe to just cast it to the appropriate type here.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tom Cosgrove <tom.cosgrove@arm.com>
(Merged from https://github.com/openssl/openssl/pull/25015)

crypto/threads_win.c

index 0196235a13e4cd7e5c221bda41e94292f99289b3..fe57d8671b15505aa55b9ef5d3063b503835fecf 100644 (file)
@@ -365,7 +365,7 @@ static struct rcu_qp *update_qp(CRYPTO_RCU_LOCK *lock)
 
     /* update the reader index to be the prior qp */
     tmp = lock->current_alloc_idx;
-    InterlockedExchange(&lock->reader_idx, tmp);
+    InterlockedExchange((LONG volatile *)&lock->reader_idx, tmp);
 
     /* wake up any waiters */
     ossl_crypto_condvar_broadcast(lock->alloc_signal);