* fhandler.h (enum del_lock_called_from): New enumeration.

(fhandler_base::del_my_locks): Declare taking a del_lock_called_from
	as argument.
	* fhandler.cc (fhandler_base::close): Call del_my_locks with "on_close".
	(fhandler_base::fixup_after_fork): Call del_my_locks with "after_fork".
	(fhandler_base::fixup_after_exec): Call del_my_locks with "after_exec".
	* flock.cc (fhandler_base::del_my_locks): Take del_lock_called_from
	as argument.  Call node->del_my_locks with NULL handle in after_exec
	case.  Explain why.
This commit is contained in:
Corinna Vinschen
2009-07-22 15:46:36 +00:00
parent 1e497ebd33
commit 4a77aea071
4 changed files with 35 additions and 7 deletions

View File

@@ -1,7 +1,7 @@
/* fhandler.cc. See console.cc for fhandler_console functions.
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
2005, 2006, 2007, 2008 Red Hat, Inc.
2005, 2006, 2007, 2008, 2009 Red Hat, Inc.
This file is part of Cygwin.
@@ -1034,7 +1034,7 @@ fhandler_base::close ()
/* Delete all POSIX locks on the file. Delete all flock locks on the
file if this is the last reference to this file. */
if (unique_id)
del_my_locks (false);
del_my_locks (on_close);
if (nohandle () || CloseHandle (get_handle ()))
res = 0;
else
@@ -1359,7 +1359,7 @@ fhandler_base::fixup_after_fork (HANDLE parent)
setup_overlapped ();
/* POSIX locks are not inherited across fork. */
if (unique_id)
del_my_locks (true);
del_my_locks (after_fork);
}
void
@@ -1369,7 +1369,7 @@ fhandler_base::fixup_after_exec ()
if (get_overlapped ())
setup_overlapped ();
if (unique_id && close_on_exec ())
del_my_locks (false);
del_my_locks (after_exec);
}
bool