summaryrefslogtreecommitdiff
path: root/io.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-11-30 14:49:18 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-11-30 14:49:18 +0000
commit6f1b13de9904e3c26ebf14e4b5633e4b9f4a01ff (patch)
treebf7cb657b868c5912bcb7dd61b24d96afa44f3d5 /io.c
parente6e84eab64ae594f78d21dbd07ba1d2de57168e3 (diff)
* io.c (pipe_open): errno should be preserved for rb_sys_fail() when
fork failed. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7428 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r--io.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/io.c b/io.c
index 857a12a614..1eb9fdf683 100644
--- a/io.c
+++ b/io.c
@@ -2903,8 +2903,10 @@ pipe_open(argc, argv, mode)
if (modef & FMODE_READABLE) close(arg.pr[1]);
if (modef & FMODE_WRITABLE) close(arg.pw[0]);
if (pid == -1) {
+ int e = errno;
if (modef & FMODE_READABLE) close(arg.pr[0]);
if (modef & FMODE_WRITABLE) close(arg.pw[1]);
+ errno = e;
rb_sys_fail(cmd);
}
#define PIPE_FDOPEN(i) (rb_fdopen((i?arg.pw:arg.pr)[i], i?"w":"r"))