summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwtc%netscape.com <devnull@localhost>2001-05-04 23:07:34 +0000
committerwtc%netscape.com <devnull@localhost>2001-05-04 23:07:34 +0000
commit5d3858cef04f87be4016bca2d1825748bf628e6e (patch)
treecb1158a3fe79fc2988b6546dcce8f21e3f8bc90b
parent8636fff3222ecfb669741ad210a3ec7e3e96fc1e (diff)
downloadnspr-hg-5d3858cef04f87be4016bca2d1825748bf628e6e.tar.gz
Bugzilla bug #70295: fixed a bug introduced by my previous fix.
Modified files: prfile.c, ptio.c (NSPRPUB_RELEASE_4_1_BRANCH)
-rw-r--r--pr/src/io/prfile.c10
-rw-r--r--pr/src/pthreads/ptio.c11
2 files changed, 8 insertions, 13 deletions
diff --git a/pr/src/io/prfile.c b/pr/src/io/prfile.c
index e1932307..aa1f4edc 100644
--- a/pr/src/io/prfile.c
+++ b/pr/src/io/prfile.c
@@ -633,18 +633,16 @@ PR_IMPLEMENT(PRStatus) PR_LockFile(PRFileDesc *fd)
#endif
PR_Lock(_pr_flock_lock);
+ while (fd->secret->lockCount == -1)
+ PR_WaitCondVar(_pr_flock_cv, PR_INTERVAL_NO_TIMEOUT);
if (fd->secret->lockCount == 0) {
fd->secret->lockCount == -1;
PR_Unlock(_pr_flock_lock);
status = _PR_MD_LOCKFILE(fd->secret->md.osfd);
PR_Lock(_pr_flock_lock);
- if (status == PR_SUCCESS) {
- fd->secret->lockCount = 1;
- PR_NotifyAllCondVar(_pr_flock_cv);
- }
+ fd->secret->lockCount = (status == PR_SUCCESS) ? 1 : 0;
+ PR_NotifyAllCondVar(_pr_flock_cv);
} else {
- while (fd->secret->lockCount == -1)
- PR_WaitCondVar(_pr_flock_cv, PR_INTERVAL_NO_TIMEOUT);
fd->secret->lockCount++;
}
PR_Unlock(_pr_flock_lock);
diff --git a/pr/src/pthreads/ptio.c b/pr/src/pthreads/ptio.c
index 121be8d6..5dd54b09 100644
--- a/pr/src/pthreads/ptio.c
+++ b/pr/src/pthreads/ptio.c
@@ -4163,22 +4163,19 @@ PR_IMPLEMENT(PRStatus) PR_LockFile(PRFileDesc *fd)
if (pt_TestAbort()) return PR_FAILURE;
PR_Lock(_pr_flock_lock);
+ while (-1 == fd->secret->lockCount)
+ PR_WaitCondVar(_pr_flock_cv, PR_INTERVAL_NO_TIMEOUT);
if (0 == fd->secret->lockCount)
{
fd->secret->lockCount = -1;
PR_Unlock(_pr_flock_lock);
status = _PR_MD_LOCKFILE(fd->secret->md.osfd);
PR_Lock(_pr_flock_lock);
- if (PR_SUCCESS == status)
- {
- fd->secret->lockCount = 1;
- PR_NotifyAllCondVar(_pr_flock_cv);
- }
+ fd->secret->lockCount = (PR_SUCCESS == status) ? 1 : 0;
+ PR_NotifyAllCondVar(_pr_flock_cv);
}
else
{
- while (-1 == fd->secret->lockCount)
- PR_WaitCondVar(_pr_flock_cv, PR_INTERVAL_NO_TIMEOUT);
fd->secret->lockCount += 1;
}
PR_Unlock(_pr_flock_lock);