diff options
author | wrowe <wrowe@13f79535-47bb-0310-9956-ffa450edef68> | 2003-08-06 23:50:13 +0000 |
---|---|---|
committer | wrowe <wrowe@13f79535-47bb-0310-9956-ffa450edef68> | 2003-08-06 23:50:13 +0000 |
commit | cf4d3042418e5f6c325a7dd9afaeaf6a433c94d4 (patch) | |
tree | 0880225ae49ac669e9f9a69d8bde933a144853e6 /locks | |
parent | a3d005c0ea4cd14bf97670bf5e9ce0fe10272814 (diff) | |
download | libapr-cf4d3042418e5f6c325a7dd9afaeaf6a433c94d4.tar.gz |
Invert the order of marking the lock as released. Since we first
lock, then mark locked; instead mark as unlock (while the lock is
still held) and then unlock.
Serious change, this will mean that an unlock 'failure' will still
set the unlocked flag. This is consistent with the fact that the
lock probably is not held or valid anymore, and certainly shouldn't
be re-unlocked when destroyed.
git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@64577 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'locks')
-rw-r--r-- | locks/unix/proc_mutex.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/locks/unix/proc_mutex.c b/locks/unix/proc_mutex.c index 1fc630c38..8d020db2b 100644 --- a/locks/unix/proc_mutex.c +++ b/locks/unix/proc_mutex.c @@ -165,10 +165,10 @@ static apr_status_t proc_mutex_posix_release(apr_proc_mutex_t *mutex) { int rc; + mutex->curr_locked = 0; if ((rc = sem_post((sem_t *)mutex->interproc->filedes)) < 0) { return errno; } - mutex->curr_locked = 0; return APR_SUCCESS; } @@ -269,13 +269,13 @@ static apr_status_t proc_mutex_sysv_release(apr_proc_mutex_t *mutex) { int rc; + mutex->curr_locked = 0; do { rc = semop(mutex->interproc->filedes, &proc_mutex_op_off, 1); } while (rc < 0 && errno == EINTR); if (rc < 0) { return errno; } - mutex->curr_locked = 0; return APR_SUCCESS; } @@ -434,13 +434,13 @@ static apr_status_t proc_mutex_proc_pthread_release(apr_proc_mutex_t *mutex) { apr_status_t rv; + mutex->curr_locked = 0; if ((rv = pthread_mutex_unlock(mutex->pthread_interproc))) { #ifdef PTHREAD_SETS_ERRNO rv = errno; #endif return rv; } - mutex->curr_locked = 0; return APR_SUCCESS; } @@ -553,13 +553,13 @@ static apr_status_t proc_mutex_fcntl_release(apr_proc_mutex_t *mutex) { int rc; + mutex->curr_locked=0; do { rc = fcntl(mutex->interproc->filedes, F_SETLKW, &proc_mutex_unlock_it); } while (rc < 0 && errno == EINTR); if (rc < 0) { return errno; } - mutex->curr_locked=0; return APR_SUCCESS; } @@ -661,13 +661,13 @@ static apr_status_t proc_mutex_flock_release(apr_proc_mutex_t *mutex) { int rc; + mutex->curr_locked = 0; do { rc = flock(mutex->interproc->filedes, LOCK_UN); } while (rc < 0 && errno == EINTR); if (rc < 0) { return errno; } - mutex->curr_locked = 0; return APR_SUCCESS; } |