[Libsysio-commit] HEAD: libsysio/src dup.c file.c file_hack.c
Brought to you by:
lward
From: Lee W. <lw...@us...> - 2005-06-16 21:01:24
|
Update of /cvsroot/libsysio/libsysio/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5985 Modified Files: dup.c file.c file_hack.c Log Message: Some cases where oldfd < 0 were sneaking by. Catch it deep now to prevent that everywhere. Index: dup.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/dup.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -w -b -B -p -r1.11 -r1.12 --- dup.c 27 Jul 2004 15:00:43 -0000 1.11 +++ dup.c 16 Jun 2005 21:01:14 -0000 1.12 @@ -59,16 +59,6 @@ SYSIO_INTERFACE_NAME(dup2)(int oldfd, in SYSIO_INTERFACE_ENTER; if (newfd < 0) SYSIO_INTERFACE_RETURN(-1, -EBADF); - - if (oldfd == newfd) { - struct file *fil; - - fil = _sysio_fd_find(oldfd); - if (!(fil && fil->f_ino)) - SYSIO_INTERFACE_RETURN(-1, -EBADF); - SYSIO_INTERFACE_RETURN(newfd, 0); - } - fd = _sysio_fd_dup(oldfd, newfd, 1); SYSIO_INTERFACE_RETURN(fd < 0 ? -1 : fd, fd < 0 ? fd : 0); } Index: file.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/file.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -w -b -B -p -r1.17 -r1.18 --- file.c 21 Sep 2004 16:18:30 -0000 1.17 +++ file.c 16 Jun 2005 21:01:14 -0000 1.18 @@ -272,7 +272,7 @@ _sysio_fd_dup(int oldfd, int newfd, int struct file *fil; int fd; - if (oldfd == newfd) + if (oldfd == newfd && oldfd >= 0) return newfd; fil = _sysio_fd_find(oldfd); Index: file_hack.c =================================================================== RCS file: /cvsroot/libsysio/libsysio/src/file_hack.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -w -b -B -p -r1.7 -r1.8 --- file_hack.c 16 Jun 2005 20:36:48 -0000 1.7 +++ file_hack.c 16 Jun 2005 21:01:14 -0000 1.8 @@ -361,7 +361,7 @@ _sysio_fd_dup(int oldfd, int newfd, int init_oftab(); - if (oldfd == newfd) + if (oldfd == newfd && oldfd >= 0) return newfd; fil = _sysio_fd_find(oldfd); |