Try again to only test __STDC_VERSION__ when defined.
6e1f6456 tried to do this, but MSVC doesn't short-circuit #if
statements. So this change tries having the test be in a different #if.
Change-Id: Id0074770c166a2b7cd9ba2c8cd06245a68b77af8
diff --git a/crypto/internal.h b/crypto/internal.h
index 8c38279..50b9a40 100644
--- a/crypto/internal.h
+++ b/crypto/internal.h
@@ -356,14 +356,15 @@
/* Reference counting. */
-#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L && \
- !defined(__STDC_NO_ATOMICS__)
+#if defined(__STDC_VERSION__)
+#if __STDC_VERSION__ >= 201112L && !defined(__STDC_NO_ATOMICS__)
/* OSX's atomic support is broken: the compiler sets the right macros but
* stdatomic.h is missing. */
#if !defined(OPENSSL_APPLE)
#define OPENSSL_C11_ATOMIC
#endif
#endif
+#endif
/* CRYPTO_REFCOUNT_MAX is the value at which the reference count saturates. */
#define CRYPTO_REFCOUNT_MAX 0xffffffff
diff --git a/crypto/refcount_c11.c b/crypto/refcount_c11.c
index a77473f..724db35 100644
--- a/crypto/refcount_c11.c
+++ b/crypto/refcount_c11.c
@@ -35,7 +35,8 @@
"CRYPTO_REFCOUNT_MAX is incorrect");
void CRYPTO_refcount_inc(CRYPTO_refcount_t *count) {
- uint32_t expected = atomic_load(count);
+ uint32_t expected =
+ atomic_load(static_cast<_Atomic CRYPTO_refcount_t>(count));
while (expected != CRYPTO_REFCOUNT_MAX) {
uint32_t new_value = expected + 1;