diff options
author | Arnold D. Robbins <arnold@skeeve.com> | 2011-02-11 10:55:15 +0200 |
---|---|---|
committer | Arnold D. Robbins <arnold@skeeve.com> | 2011-02-11 10:55:15 +0200 |
commit | 050e7204af5086a851c22beb0829e9b9a163e8e1 (patch) | |
tree | 9f2bb3fc3e0e7801134aa20e471c84285722a266 /io.c | |
parent | 643ded4c0ff21ffedace511e8cfcbeb8f3bf8467 (diff) | |
download | egawk-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.c | 8 |
1 files changed, 5 insertions, 3 deletions
@@ -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; } |