summaryrefslogtreecommitdiff
path: root/locks
diff options
context:
space:
mode:
authorwrowe <wrowe@13f79535-47bb-0310-9956-ffa450edef68>2003-08-06 23:50:13 +0000
committerwrowe <wrowe@13f79535-47bb-0310-9956-ffa450edef68>2003-08-06 23:50:13 +0000
commitcf4d3042418e5f6c325a7dd9afaeaf6a433c94d4 (patch)
tree0880225ae49ac669e9f9a69d8bde933a144853e6 /locks
parenta3d005c0ea4cd14bf97670bf5e9ce0fe10272814 (diff)
downloadlibapr-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.c10
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;
}