summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--io.c6
2 files changed, 10 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 0ae3fc46be..3ad3af7602 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+Fri Jan 4 00:29:40 2013 Yuki Yugui Sonoda <yugui@yugui.jp>
+
+ * io.c (rb_cloexec_fcntl_dupfd): Fix failures in
+ bootstrap_test/test_io.rb. NativeClient does not support F_DUPFD
+ but supports dup2(2).
+
Thu Jan 3 17:46:50 2013 Kouhei Sutou <kou@cozmixng.org>
* lib/rexml/element.rb (REXML::Elements#add): Remove too much
diff --git a/io.c b/io.c
index f75251b10e..2bbce9f330 100644
--- a/io.c
+++ b/io.c
@@ -298,7 +298,7 @@ rb_cloexec_fcntl_dupfd(int fd, int minfd)
{
int ret;
-#if defined(HAVE_FCNTL) && defined(F_DUPFD_CLOEXEC)
+#if defined(HAVE_FCNTL) && defined(F_DUPFD_CLOEXEC) && !defined(__native_client__)
static int try_dupfd_cloexec = 1;
if (try_dupfd_cloexec) {
ret = fcntl(fd, F_DUPFD_CLOEXEC, minfd);
@@ -318,8 +318,10 @@ rb_cloexec_fcntl_dupfd(int fd, int minfd)
else {
ret = fcntl(fd, F_DUPFD, minfd);
}
-#else
+#elif defined(HAVE_FCNTL) && !defined(__native_client__)
ret = fcntl(fd, F_DUPFD, minfd);
+#else
+ ret = dup2(fd, minfd);
#endif
if (ret == -1) return -1;
rb_maygvl_fd_fix_cloexec(ret);