diff options
author | Pauli <paul.dale@oracle.com> | 2017-10-11 09:47:54 +1000 |
---|---|---|
committer | Pauli <paul.dale@oracle.com> | 2017-10-11 09:47:54 +1000 |
commit | f49452c297438ec349a76dfa38fa26a780084f96 (patch) | |
tree | 95b14e9c3ab78f653b57458eabe8eac327e6f441 /crypto | |
parent | 19f05ebc3f5346d89ec7e71feb5504dbd093721a (diff) |
Return a value from atomic read on Windows.
Use a read lock when reading using pthreads.
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/4517)
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/threads_pthread.c | 2 | ||||
-rw-r--r-- | crypto/threads_win.c | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/crypto/threads_pthread.c b/crypto/threads_pthread.c index 34be314f1f..3aeef21668 100644 --- a/crypto/threads_pthread.c +++ b/crypto/threads_pthread.c @@ -177,7 +177,7 @@ int CRYPTO_atomic_read(int *val, int *ret, CRYPTO_RWLOCK *lock) return 1; } # endif - if (!CRYPTO_THREAD_write_lock(lock)) + if (!CRYPTO_THREAD_read_lock(lock)) return 0; *ret = *val; diff --git a/crypto/threads_win.c b/crypto/threads_win.c index ab2eb25740..f222aa5d03 100644 --- a/crypto/threads_win.c +++ b/crypto/threads_win.c @@ -135,7 +135,7 @@ int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock) int CRYPTO_atomic_read(int *val, int *ret, CRYPTO_RWLOCK *lock) { - InterlockedCompareExchange(val, 0, 0); + *ret = InterlockedCompareExchange(val, 0, 0); return 1; } |