* 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>
|
2012-02-01 Christopher Faylor <me.cygwin2012@cgf.cx>
|
||||||
|
|
||||||
* dtable.cc (dtable::dup_worker): Add comment explaining why refcnt
|
* dtable.cc (dtable::dup_worker): Add comment explaining why refcnt
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* fcntl.cc: fcntl syscall
|
/* fcntl.cc: fcntl syscall
|
||||||
|
|
||||||
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2008,
|
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.
|
This file is part of Cygwin.
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@ fcntl64 (int fd, int cmd, ...)
|
||||||
|
|
||||||
pthread_testcancel ();
|
pthread_testcancel ();
|
||||||
|
|
||||||
|
debug_printf ("fcntl(%d, %d, ...)", fd, cmd);
|
||||||
myfault efault;
|
myfault efault;
|
||||||
if (efault.faulted (EFAULT))
|
if (efault.faulted (EFAULT))
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -45,8 +46,10 @@ fcntl64 (int fd, int cmd, ...)
|
||||||
case F_DUPFD:
|
case F_DUPFD:
|
||||||
case F_DUPFD_CLOEXEC:
|
case F_DUPFD_CLOEXEC:
|
||||||
if ((int) arg >= 0 && (int) arg < OPEN_MAX_MAX)
|
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
|
else
|
||||||
{
|
{
|
||||||
set_errno (EINVAL);
|
set_errno (EINVAL);
|
||||||
|
@ -107,3 +110,4 @@ _fcntl (int fd, int cmd, ...)
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue