summaryrefslogtreecommitdiff
path: root/io.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-12-12 07:42:35 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2000-12-12 07:42:35 +0000
commit3a7020854d43c4d29ca5cd9013e3af139f378548 (patch)
tree2a73f7f17fa97d74f5580248e39f39765747d573 /io.c
parent2322a131272f705139fb1e6bbcf1d85a0205e8b0 (diff)
matz
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@1061 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'io.c')
-rw-r--r--io.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/io.c b/io.c
index 8c9ccc0ee4..91d44c87d1 100644
--- a/io.c
+++ b/io.c
@@ -1013,13 +1013,10 @@ fptr_finalize(fptr)
}
}
-void
-rb_io_fptr_finalize(fptr)
+static void
+rb_io_fptr_cleanup(fptr)
OpenFile *fptr;
{
- if (!fptr) return;
- if (!fptr->f && !fptr->f2) return;
-
if (fptr->finalize) {
(*fptr->finalize)(fptr);
}
@@ -1034,6 +1031,17 @@ rb_io_fptr_finalize(fptr)
}
}
+void
+rb_io_fptr_finalize(fptr)
+ OpenFile *fptr;
+{
+ if (!fptr) return;
+ if (!fptr->f && !fptr->f2) return;
+ if (fileno(fptr->f) < 3) return;
+
+ rb_io_fptr_cleanup(fptr);
+}
+
static void
rb_io_fptr_close(fptr)
OpenFile *fptr;
@@ -1044,7 +1052,7 @@ rb_io_fptr_close(fptr)
if (!fptr->f && !fptr->f2) return;
fd = fileno(fptr->f);
- rb_io_fptr_finalize(fptr);
+ rb_io_fptr_cleanup(fptr);
rb_thread_fd_close(fd);
}