aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-03-10 15:23:01 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1994-03-10 15:23:01 -0500
commiteadbc96110328dd5ccab01c9e4dfb478aa0a1c6b (patch)
tree835b877e5e01adb9a437b31db55de6063f303d4f /gcc
parent4b19dee8c649b7083f946f242dba1a02ffedd40d (diff)
downloadgcc-eadbc96110328dd5ccab01c9e4dfb478aa0a1c6b.zip
gcc-eadbc96110328dd5ccab01c9e4dfb478aa0a1c6b.tar.gz
gcc-eadbc96110328dd5ccab01c9e4dfb478aa0a1c6b.tar.bz2
(dup2): Catch dup() failure. Return correct value.
From-SVN: r6740
Diffstat (limited to 'gcc')
-rw-r--r--gcc/collect2.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/collect2.c b/gcc/collect2.c
index 8256d87..9f097a9 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -277,14 +277,14 @@ dup2 (oldfd, newfd)
int fd;
if (oldfd == newfd)
- return 0;
+ return oldfd;
close (newfd);
- while ((fd = dup (oldfd)) != newfd) /* good enough for low fd's */
+ while ((fd = dup (oldfd)) != newfd && fd >= 0) /* good enough for low fd's */
fdtmp[fdx++] = fd;
while (fdx > 0)
close (fdtmp[--fdx]);
- return 0;
+ return fd;
}
#endif