aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--io.c7
2 files changed, 12 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 19fedc1d01..43332d48f2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Mon Nov 7 19:43:10 2011 Tanaka Akira <akr@fsij.org>
+
+ * io.c (rb_close_before_exec): use F_MAXFD if available.
+ F_MAXFD is available on NetBSD since NetBSD 2.0.
+
Mon Nov 7 19:25:16 2011 NAKAMURA Usaku <usa@ruby-lang.org>
* test/ruby/test_io_m17n.rb
diff --git a/io.c b/io.c
index 8dabdbcc9a..307611f7a2 100644
--- a/io.c
+++ b/io.c
@@ -5123,6 +5123,13 @@ rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds)
int max = max_file_descriptor;
if (max < maxhint)
max = maxhint;
+#ifdef F_MAXFD
+ /* F_MAXFD is available since NetBSD 2.0. */
+ ret = fcntl(0, F_MAXFD);
+ if (ret != -1) {
+ max = ret;
+ }
+#endif
for (fd = lowfd; fd <= max; fd++) {
if (!NIL_P(noclose_fds) &&
RTEST(rb_hash_lookup(noclose_fds, INT2FIX(fd))))