From 6f1b13de9904e3c26ebf14e4b5633e4b9f4a01ff Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 30 Nov 2004 14:49:18 +0000 Subject: [PATCH] * 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 --- ChangeLog | 5 +++++ io.c | 2 ++ 2 files changed, 7 insertions(+) diff --git a/ChangeLog b/ChangeLog index 20f8fb9654..07302f4628 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Nov 30 23:49:12 2004 Nobuyoshi Nakada + + * io.c (pipe_open): errno should be preserved for rb_sys_fail() when + fork failed. + Tue Nov 30 16:18:50 2004 Yukihiro Matsumoto * io.c (io_fread): need not to null terminate. [ruby-dev:24998] 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"))