diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-11-30 14:49:18 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-11-30 14:49:18 +0000 |
commit | 6f1b13de9904e3c26ebf14e4b5633e4b9f4a01ff (patch) | |
tree | bf7cb657b868c5912bcb7dd61b24d96afa44f3d5 /io.c | |
parent | e6e84eab64ae594f78d21dbd07ba1d2de57168e3 (diff) | |
download | ruby-6f1b13de9904e3c26ebf14e4b5633e4b9f4a01ff.tar.gz |
* 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.c | 2 |
1 files changed, 2 insertions, 0 deletions
@@ -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")) |