aboutsummaryrefslogtreecommitdiffstats
path: root/io.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2011-02-11 10:55:15 +0200
committerArnold D. Robbins <arnold@skeeve.com>2011-02-11 10:55:15 +0200
commit050e7204af5086a851c22beb0829e9b9a163e8e1 (patch)
tree9f2bb3fc3e0e7801134aa20e471c84285722a266 /io.c
parent643ded4c0ff21ffedace511e8cfcbeb8f3bf8467 (diff)
downloadegawk-050e7204af5086a851c22beb0829e9b9a163e8e1.tar.gz
egawk-050e7204af5086a851c22beb0829e9b9a163e8e1.tar.bz2
egawk-050e7204af5086a851c22beb0829e9b9a163e8e1.zip
Bug fix in io.c. New test release.
Diffstat (limited to 'io.c')
-rw-r--r--io.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/io.c b/io.c
index 6756782a..be6c462c 100644
--- a/io.c
+++ b/io.c
@@ -446,13 +446,15 @@ remap_std_file(int oldfd)
int newfd;
int ret = -1;
+ close(oldfd);
newfd = open("/dev/null", O_RDWR);
- if (newfd >= 0) {
- /* dup2() will close fileno(fp) for us first. */
+ if (newfd >= 0 && newfd != oldfd) {
+ /* dup2() will close oldfd for us first. */
ret = dup2(newfd, oldfd);
if (ret == 0)
close(newfd);
- }
+ } else
+ ret = 0;
return ret;
}