* fcntl.cc (fcntl64): Add introductory debug statement. Call dup3 directory
via dtable method to avoid over-incrementing refcnt.
This commit is contained in:
parent
8fa8b3a389
commit
29b7448d58
|
@ -1,3 +1,8 @@
|
|||
2012-02-01 Christopher Faylor <me.cygwin2012@cgf.cx>
|
||||
|
||||
* fcntl.cc (fcntl64): Add introductory debug statement. Call dup3
|
||||
directory via dtable method to avoid over-incrementing refcnt.
|
||||
|
||||
2012-02-01 Christopher Faylor <me.cygwin2012@cgf.cx>
|
||||
|
||||
* dtable.cc (dtable::dup_worker): Add comment explaining why refcnt
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* fcntl.cc: fcntl syscall
|
||||
|
||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2008,
|
||||
2009, 2010, 2011 Red Hat, Inc.
|
||||
2009, 2010, 2011, 2012 Red Hat, Inc.
|
||||
|
||||
This file is part of Cygwin.
|
||||
|
||||
|
@ -28,6 +28,7 @@ fcntl64 (int fd, int cmd, ...)
|
|||
|
||||
pthread_testcancel ();
|
||||
|
||||
debug_printf ("fcntl(%d, %d, ...)", fd, cmd);
|
||||
myfault efault;
|
||||
if (efault.faulted (EFAULT))
|
||||
return -1;
|
||||
|
@ -45,8 +46,10 @@ fcntl64 (int fd, int cmd, ...)
|
|||
case F_DUPFD:
|
||||
case F_DUPFD_CLOEXEC:
|
||||
if ((int) arg >= 0 && (int) arg < OPEN_MAX_MAX)
|
||||
res = dup3 (fd, cygheap_fdnew (((int) arg) - 1),
|
||||
cmd == F_DUPFD_CLOEXEC ? O_CLOEXEC : 0);
|
||||
{
|
||||
int flags = cmd == F_DUPFD_CLOEXEC ? O_CLOEXEC : 0;
|
||||
res = cygheap->fdtab.dup3 (fd, cygheap_fdnew (((int) arg) - 1), flags);
|
||||
}
|
||||
else
|
||||
{
|
||||
set_errno (EINVAL);
|
||||
|
@ -107,3 +110,4 @@ _fcntl (int fd, int cmd, ...)
|
|||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue