* flock.cc (inode_t::del_my_locks): Drop useless counter lc. Close
lock object handle explicitely in case of called during fork. Add comment to explain why. * fork.cc (frok::child): Drop declaration of fixup_lockf_after_fork.
This commit is contained in:
parent
2196614e3d
commit
3c53eaeb5b
|
@ -1,3 +1,10 @@
|
||||||
|
2012-02-20 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* flock.cc (inode_t::del_my_locks): Drop useless counter lc. Close
|
||||||
|
lock object handle explicitely in case of called during fork. Add
|
||||||
|
comment to explain why.
|
||||||
|
* fork.cc (frok::child): Drop declaration of fixup_lockf_after_fork.
|
||||||
|
|
||||||
2012-02-17 Corinna Vinschen <corinna@vinschen.de>
|
2012-02-17 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* timer.cc (getitimer): Don't create another local ret variable in
|
* timer.cc (getitimer): Don't create another local ret variable in
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* flock.cc. NT specific implementation of advisory file locking.
|
/* flock.cc. NT specific implementation of advisory file locking.
|
||||||
|
|
||||||
Copyright 2003, 2008, 2009, 2010, 2011 Red Hat, Inc.
|
Copyright 2003, 2008, 2009, 2010, 2011, 2012 Red Hat, Inc.
|
||||||
|
|
||||||
This file is part of Cygwin.
|
This file is part of Cygwin.
|
||||||
|
|
||||||
|
@ -347,14 +347,18 @@ inode_t::del_my_locks (long long id, HANDLE fhdl)
|
||||||
{
|
{
|
||||||
lockf_t *lock, *n_lock;
|
lockf_t *lock, *n_lock;
|
||||||
lockf_t **prev = &i_lockf;
|
lockf_t **prev = &i_lockf;
|
||||||
int lc = 0;
|
|
||||||
for (lock = *prev; lock && (n_lock = lock->lf_next, 1); lock = n_lock)
|
for (lock = *prev; lock && (n_lock = lock->lf_next, 1); lock = n_lock)
|
||||||
{
|
{
|
||||||
if (lock->lf_flags & F_POSIX)
|
if (lock->lf_flags & F_POSIX)
|
||||||
{
|
{
|
||||||
/* Delete all POSIX locks. */
|
/* Delete all POSIX locks. */
|
||||||
*prev = n_lock;
|
*prev = n_lock;
|
||||||
++lc;
|
/* When called during fork, the POSIX lock must get deleted but
|
||||||
|
*not* signalled. The lock is still active and locked in the
|
||||||
|
parent. So in case of fork, we call close_lock_obj explicitely,
|
||||||
|
since del_lock_obj is called from the destructor. */
|
||||||
|
if (!id)
|
||||||
|
lock->close_lock_obj ();
|
||||||
delete lock;
|
delete lock;
|
||||||
}
|
}
|
||||||
else if (id && lock->lf_id == id)
|
else if (id && lock->lf_id == id)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* fork.cc
|
/* fork.cc
|
||||||
|
|
||||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006,
|
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006,
|
||||||
2007, 2008, 2009, 2010, 2011 Red Hat, Inc.
|
2007, 2008, 2009, 2010, 2011, 2012 Red Hat, Inc.
|
||||||
|
|
||||||
This file is part of Cygwin.
|
This file is part of Cygwin.
|
||||||
|
|
||||||
|
@ -190,7 +190,6 @@ int __stdcall
|
||||||
frok::child (volatile char * volatile here)
|
frok::child (volatile char * volatile here)
|
||||||
{
|
{
|
||||||
HANDLE& hParent = ch.parent;
|
HANDLE& hParent = ch.parent;
|
||||||
extern void fixup_lockf_after_fork ();
|
|
||||||
extern void fixup_hooks_after_fork ();
|
extern void fixup_hooks_after_fork ();
|
||||||
extern void fixup_timers_after_fork ();
|
extern void fixup_timers_after_fork ();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue