diff options
author | Eric Andersen <andersen@codepoet.org> | 2002-06-11 11:55:44 +0000 |
---|---|---|
committer | Eric Andersen <andersen@codepoet.org> | 2002-06-11 11:55:44 +0000 |
commit | e26a5970cadb10b06977ddb5928c36d8b1be1367 (patch) | |
tree | bc3c5571885f40c5da4a01560f2b1169367e662f | |
parent | 417197ca7ced6f14701137a989dfe0e88edeb6e9 (diff) |
A patch from Ted Phelps to fix popen(). Ted writes:
There is a minor bug in the implementation of popen(). In the case
where the file descriptor returned from its call to pipe() is the same
as the file descriptor that it is meant to be (where the dup2() branch
is not taken), the end of the pipe is still closed by close(reading)
even though it shouldn't be.
Thanks Ted!
-rw-r--r-- | libc/stdio/popen.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/libc/stdio/popen.c b/libc/stdio/popen.c index cddc9d6c4..a77a82e66 100644 --- a/libc/stdio/popen.c +++ b/libc/stdio/popen.c @@ -34,8 +34,8 @@ FILE *popen (const char *command, const char *mode) if ((fp = fdopen(pnr, mode)) != NULL) { if ((pid = vfork()) == 0) { /* vfork -- child */ close(pnr); - close(reading); if (pr != reading) { + close(reading); dup2(pr, reading); close(pr); } |