From a8c8f19a43534cb9172539fcfcc6e83a39f48b9d Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Tue, 14 Feb 2012 13:55:45 +0000 Subject: [PATCH] * flock.cc (lf_setlock): Don't close waited lock object handle before we own the node lock. Fix comment. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/flock.cc | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 834fe7ac0..495c15d79 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2012-02-14 Corinna Vinschen + + * flock.cc (lf_setlock): Don't close waited lock object handle before + we own the node lock. Fix comment. + 2012-02-14 Corinna Vinschen * cygheap.cc (init_cygheap::init_installation_root): Convert function diff --git a/winsup/cygwin/flock.cc b/winsup/cygwin/flock.cc index bd508719c..4f920643d 100644 --- a/winsup/cygwin/flock.cc +++ b/winsup/cygwin/flock.cc @@ -1039,11 +1039,11 @@ lf_setlock (lockf_t *lock, inode_t *node, lockf_t **clean, HANDLE fhdl) DWORD ret = WaitForMultipleObjects (wait_count, w4, FALSE, proc ? INFINITE : 100L); SetThreadPriority (GetCurrentThread (), old_prio); - /* Always close handles before locking the node. */ - NtClose (obj); if (proc) CloseHandle (proc); node->LOCK (); + /* Never close lock object handle outside of node lock! */ + NtClose (obj); if (ret == WAIT_SIGNAL_ARRIVED) { /* A signal came in. */