[前][次][番号順一覧][スレッド一覧]

ruby-changes:21541

From: akr <ko1@a...>
Date: Mon, 31 Oct 2011 23:50:08 +0900 (JST)
Subject: [ruby-changes:21541] akr:r33590 (trunk): * ext/socket/socket.c (rsock_socketpair): extracted from

akr	2011-10-31 23:49:57 +0900 (Mon, 31 Oct 2011)

  New Revision: 33590

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=33590

  Log:
    * ext/socket/socket.c (rsock_socketpair): extracted from
      rsock_sock_s_socketpair.

  Modified files:
    trunk/ChangeLog
    trunk/ext/socket/socket.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 33589)
+++ ChangeLog	(revision 33590)
@@ -1,3 +1,8 @@
+Mon Oct 31 23:49:38 2011  Tanaka Akira  <akr@f...>
+
+	* ext/socket/socket.c (rsock_socketpair): extracted from
+	  rsock_sock_s_socketpair.
+
 Mon Oct 31 23:31:53 2011  Tanaka Akira  <akr@f...>
 
 	* ext/socket/init.c (rsock_socket): use SOCK_CLOEXEC if available.
Index: ext/socket/socket.c
===================================================================
--- ext/socket/socket.c	(revision 33589)
+++ ext/socket/socket.c	(revision 33590)
@@ -76,6 +76,21 @@
 #endif
 
 #if defined HAVE_SOCKETPAIR
+
+static int
+rsock_socketpair(int domain, int type, int protocol, int sv[2])
+{
+    int ret;
+
+    ret = socketpair(domain, type, protocol, sv);
+    if (ret < 0 && (errno == EMFILE || errno == ENFILE)) {
+        rb_gc();
+        ret = socketpair(domain, type, protocol, sv);
+    }
+
+    return ret;
+}
+
 /*
  * call-seq:
  *   Socket.pair(domain, type, protocol)       => [socket1, socket2]
@@ -111,11 +126,7 @@
 
     setup_domain_and_type(domain, &d, type, &t);
     p = NUM2INT(protocol);
-    ret = socketpair(d, t, p, sp);
-    if (ret < 0 && (errno == EMFILE || errno == ENFILE)) {
-        rb_gc();
-        ret = socketpair(d, t, p, sp);
-    }
+    ret = rsock_socketpair(d, t, p, sp);
     if (ret < 0) {
 	rb_sys_fail("socketpair(2)");
     }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]