From 9fa63f7a5eee67e4c0eeb56d9927cae4da926abe Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 18 Nov 2009 20:05:46 +0000 Subject: [PATCH] * flock.cc (fhandler_disk_file::lock): Disable a shortcut from the original BSD code, but keep it in and documented why we can't use it. --- winsup/cygwin/ChangeLog | 5 +++++ winsup/cygwin/flock.cc | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 8ec0a07da..b1dad3552 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2009-11-18 Corinna Vinschen + + * flock.cc (fhandler_disk_file::lock): Disable a shortcut from the + original BSD code, but keep it in and documented why we can't use it. + 2009-11-18 Corinna Vinschen * ntea.cc (read_ea): Always add length of "user." prefix, not only diff --git a/winsup/cygwin/flock.cc b/winsup/cygwin/flock.cc index 92b03d51e..11a2a5731 100644 --- a/winsup/cygwin/flock.cc +++ b/winsup/cygwin/flock.cc @@ -767,8 +767,13 @@ fhandler_disk_file::lock (int a_op, struct __flock64 *fl) lockf_t **head = &node->i_lockf; +#if 0 /* * Avoid the common case of unlocking when inode_t has no locks. + * + * This shortcut is invalid for Cygwin because the above inode_t::get + * call returns with an empty lock list if this process has no locks + * on the file yet. */ if (*head == NULL) { @@ -779,6 +784,7 @@ fhandler_disk_file::lock (int a_op, struct __flock64 *fl) return 0; } } +#endif /* * Allocate a spare structure in case we have to split. */