summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-11-05 22:03:54 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-11-05 22:03:54 +0000
commit340c3b4638fd671d84a6249a33f71c71774d94b3 (patch)
tree5fa7766a3a7249b854bc1f9dce287a54d41f308c
parenta7188103fd615ce7887d4cecdd200742fac114b9 (diff)
* process.c (rb_fork_err): save errinfo before fdopen.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@29701 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--process.c3
2 files changed, 6 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 7c0d26b67a..2cb4379af2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sat Nov 6 07:03:49 2010 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_fork_err): save errinfo before fdopen.
+
Sat Nov 6 00:43:58 2010 Aaron Patterson <aaron@tenderlovemaking.com>
* ext/openssl/ossl_ocsp.c (ossl_ocspcid_initialize): an optional
diff --git a/process.c b/process.c
index ffeba3317f..4c726922cd 100644
--- a/process.c
+++ b/process.c
@@ -2569,8 +2569,9 @@ rb_fork_err(int *status, int (*chfunc)(void*, char *, size_t), void *charg, VALU
if (!(int)rb_protect(chfunc_protect, (VALUE)&arg, &state)) _exit(EXIT_SUCCESS);
#ifdef FD_CLOEXEC
if (write(ep[1], &state, sizeof(state)) == sizeof(state) && state) {
+ VALUE errinfo = rb_errinfo();
io = rb_io_fdopen(ep[1], O_WRONLY|O_BINARY, NULL);
- rb_marshal_dump(rb_errinfo(), io);
+ rb_marshal_dump(errinfo, io);
rb_io_flush(io);
}
err = errno;