Explicitly cast dst argument of InterlockedExchange{,64} calls
in CRYPTO_atomic_store{,_int}() to LONG{64,} volatile *, respectively,
to work around incompatible pointer type errors on 64-bit MinGW builds.
Initially Reported by Splediferous.
[esyr: massaged the commit message a bit]
CLA: trivial
Resolves: https://github.com/openssl/openssl/issues/30451
Fixes: cc7195da3038 "Make FIPS self test state access atomic"
Fixes: 7e45ac6891ad "Add CRYPTO_atomic_store api"
add cast to LONG volatile * for InterlockedExchange
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Paul Dale <paul.dale@oracle.com>
Reviewed-by: Eugene Syromiatnikov <esyr@openssl.org>
MergeDate: Sun Mar 22 00:56:36 2026
(Merged from https://github.com/openssl/openssl/pull/30504)
return 1;
#else
- InterlockedExchange64(dst, val);
+ InterlockedExchange64((LONG64 volatile *)dst, val);
return 1;
#endif
}
return 1;
#else
- InterlockedExchange(dst, val);
+ InterlockedExchange((LONG volatile *)dst, val);
return 1;
#endif
}