diff options
author | brianp <brianp@13f79535-47bb-0310-9956-ffa450edef68> | 2003-09-26 01:51:53 +0000 |
---|---|---|
committer | brianp <brianp@13f79535-47bb-0310-9956-ffa450edef68> | 2003-09-26 01:51:53 +0000 |
commit | 14b3e992a9e70270fd63f0d09463aa7d64b960fc (patch) | |
tree | dd75c6cc2da51f9702492eac3a2082f14b457785 | |
parent | 8ea8fc7dd220ea75941b6aeafb95020eec992c10 (diff) | |
download | libapr-14b3e992a9e70270fd63f0d09463aa7d64b960fc.tar.gz |
Fix default impl of apr_atomic_xchg32, and add a test case for it
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64642 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | atomic/unix/apr_atomic.c | 2 | ||||
-rw-r--r-- | test/testatomic.c | 13 |
2 files changed, 14 insertions, 1 deletions
diff --git a/atomic/unix/apr_atomic.c b/atomic/unix/apr_atomic.c index 97bbb669d..16912b968 100644 --- a/atomic/unix/apr_atomic.c +++ b/atomic/unix/apr_atomic.c @@ -306,7 +306,7 @@ apr_uint32_t apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val) prev = *mem; *mem = val; apr_thread_mutex_unlock(lock); - return val; + return prev; } return *mem; #else diff --git a/test/testatomic.c b/test/testatomic.c index 6603b6517..2ad4a743b 100644 --- a/test/testatomic.c +++ b/test/testatomic.c @@ -184,6 +184,19 @@ static apr_status_t check_basic_atomics32(void) } printf("OK\n"); + printf("%-60s", "testing apr_atomic_xchg32"); + apr_atomic_set32(&y32, 100); + oldval = apr_atomic_xchg32(&y32, 50); + if (oldval != 100) { + fprintf(stderr, "Failed\noldval =%d should be 100\n", oldval); + return APR_EGENERAL; + } + if (y32 != 50) { + fprintf(stderr, "Failed\nnewval =%d should be 50\n", oldval); + return APR_EGENERAL; + } + printf("OK\n"); + printf("%-60s", "testing apr_atomic_cas32"); oldval = apr_atomic_cas32(&casval, 12, 0); if (oldval != 0) { |