summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-01-13 12:45:43 +0000
committerusa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-01-13 12:45:43 +0000
commitbe551172edbf6d533674e84ecdf3745c4432f039 (patch)
tree325598c0f00881a9c5b4ea38186d6e93c39ee3dd
parent84775721bcd0b4b7330e0743fe3d53d9522ae858 (diff)
* io.c (io_reopen, rb_io_init_copy): should register fptr to pipe_list
when copying pipe fptr. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@21495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog5
-rw-r--r--io.c8
2 files changed, 13 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index d6e14d7735..2e03f7459e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Tue Jan 13 21:44:30 2009 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * io.c (io_reopen, rb_io_init_copy): should register fptr to pipe_list
+ when copying pipe fptr.
+
Tue Jan 13 21:38:07 2009 Tanaka Akira <akr@fsij.org>
* ext/socket/socket.c (rb_getaddrinfo): use getaddrinfo with GVL if
diff --git a/io.c b/io.c
index 3d615c2daf..1a445df2ef 100644
--- a/io.c
+++ b/io.c
@@ -5259,6 +5259,10 @@ io_reopen(VALUE io, VALUE nfile)
if (orig->pathv) fptr->pathv = orig->pathv;
else fptr->pathv = Qnil;
fptr->finalize = orig->finalize;
+#if defined (__CYGWIN__) || !defined(HAVE_FORK)
+ if (fptr->finalize == pipe_finalize)
+ pipe_add_fptr(fptr);
+#endif
fd = fptr->fd;
fd2 = orig->fd;
@@ -5410,6 +5414,10 @@ rb_io_init_copy(VALUE dest, VALUE io)
fptr->lineno = orig->lineno;
if (!NIL_P(orig->pathv)) fptr->pathv = orig->pathv;
fptr->finalize = orig->finalize;
+#if defined (__CYGWIN__) || !defined(HAVE_FORK)
+ if (fptr->finalize == pipe_finalize)
+ pipe_add_fptr(fptr);
+#endif
fd = ruby_dup(orig->fd);
fptr->fd = fd;