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

ruby-changes:42286

From: naruse <ko1@a...>
Date: Tue, 29 Mar 2016 14:51:03 +0900 (JST)
Subject: [ruby-changes:42286] naruse:r54360 (ruby_2_3): merge revision(s) 53677: [Backport #11877]

naruse	2016-03-29 14:50:58 +0900 (Tue, 29 Mar 2016)

  New Revision: 54360

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=54360

  Log:
    merge revision(s) 53677: [Backport #11877]
    
    * ext/socket/socket.c (sock_gethostname): support unlimited size
      hostname.

  Modified directories:
    branches/ruby_2_3/
  Modified files:
    branches/ruby_2_3/ChangeLog
    branches/ruby_2_3/ext/socket/socket.c
    branches/ruby_2_3/version.h
Index: ruby_2_3/version.h
===================================================================
--- ruby_2_3/version.h	(revision 54359)
+++ ruby_2_3/version.h	(revision 54360)
@@ -1,6 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_3/version.h#L1
 #define RUBY_VERSION "2.3.0"
 #define RUBY_RELEASE_DATE "2016-03-29"
-#define RUBY_PATCHLEVEL 17
+#define RUBY_PATCHLEVEL 18
 
 #define RUBY_RELEASE_YEAR 2016
 #define RUBY_RELEASE_MONTH 3
Index: ruby_2_3/ext/socket/socket.c
===================================================================
--- ruby_2_3/ext/socket/socket.c	(revision 54359)
+++ ruby_2_3/ext/socket/socket.c	(revision 54360)
@@ -893,13 +893,27 @@ sock_gethostname(VALUE obj) https://github.com/ruby/ruby/blob/trunk/ruby_2_3/ext/socket/socket.c#L893
 #  define RUBY_MAX_HOST_NAME_LEN 1024
 #endif
 
-    char buf[RUBY_MAX_HOST_NAME_LEN+1];
+    long len = RUBY_MAX_HOST_NAME_LEN;
+    VALUE name;
 
-    if (gethostname(buf, (int)sizeof buf - 1) < 0)
-	rb_sys_fail("gethostname(3)");
-
-    buf[sizeof buf - 1] = '\0';
-    return rb_str_new2(buf);
+    name = rb_str_new(0, len);
+    while (gethostname(RSTRING_PTR(name), len) < 0) {
+	int e = errno;
+	switch (e) {
+	  case ENAMETOOLONG:
+#ifdef __linux__
+	  case EINVAL:
+	    /* glibc before version 2.1 uses EINVAL instead of ENAMETOOLONG */
+#endif
+	    break;
+	  default:
+	    rb_syserr_fail(e, "gethostname(3)");
+	}
+	rb_str_modify_expand(name, len);
+	len += len;
+    }
+    rb_str_resize(name, strlen(RSTRING_PTR(name)));
+    return name;
 }
 #else
 #ifdef HAVE_UNAME
Index: ruby_2_3/ChangeLog
===================================================================
--- ruby_2_3/ChangeLog	(revision 54359)
+++ ruby_2_3/ChangeLog	(revision 54360)
@@ -1,3 +1,8 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_3/ChangeLog#L1
+Tue Mar 29 14:44:02 2016  Nobuyoshi Nakada  <nobu@r...>
+
+	* ext/socket/socket.c (sock_gethostname): support unlimited size
+	  hostname.
+
 Tue Mar 29 14:35:06 2016  Kouhei Sutou  <kou@c...>
 
 	* lib/xmlrpc/client.rb: Support SSL options in async methods of

Property changes on: ruby_2_3
___________________________________________________________________
Modified: svn:mergeinfo
   Merged /trunk:r53677


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

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