about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@redhat.com>2011-06-28 13:52:19 +0200
committerAndreas Schwab <schwab@redhat.com>2011-06-28 13:52:19 +0200
commit1bb5fe47df5dc69bea6a219e5dff62ec7db88036 (patch)
tree84c0da9d6de3b71c2c4e9bebd1f1b0318cec0ec1
parent18e76460b67080f19576f358a62d0f1d8a7a0d1f (diff)
parent96147940d8ffb63efdf84a7f2608eec742df8c61 (diff)
downloadglibc-1bb5fe47df5dc69bea6a219e5dff62ec7db88036.tar.gz
glibc-1bb5fe47df5dc69bea6a219e5dff62ec7db88036.tar.xz
glibc-1bb5fe47df5dc69bea6a219e5dff62ec7db88036.zip
Merge remote-tracking branch 'origin/release/2.14/master' into fedora/2.14/master
-rw-r--r--ChangeLog19
-rw-r--r--iconvdata/gb18030.c12
-rw-r--r--sysdeps/posix/getaddrinfo.c28
3 files changed, 32 insertions, 27 deletions
diff --git a/ChangeLog b/ChangeLog
index 59f059afa6..19e0f0022c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,12 +1,21 @@
-2011-06-21  Andreas Schwab  <schwab@redhat.com>
+2011-06-27  Andreas Schwab  <schwab@redhat.com>
 
-	* iconvdata/gb18030.c: Regenerate tables.
+	* iconvdata/gb18030.c (BODY for TO_LOOP): Fix encoding of non-BMP
+	two-byte characters.
+
+2011-06-22  Andreas Schwab  <schwab@redhat.com>
+
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Fix last change.
 
-2011-06-16  Andreas Schwab  <schwab@redhat.com>
+2011-06-21  Ulrich Drepper  <drepper@gmail.com>
 
 	[BZ #12885]
-	* sysdeps/posix/getaddrinfo.c (gaih_inet): Filter results from
-	gethostbyname4_r according to request flags.
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): When looking up only IPv6
+	addresses using gethostbyname4_r ignore IPv4 addresses.
+
+2011-06-21  Andreas Schwab  <schwab@redhat.com>
+
+	* iconvdata/gb18030.c: Regenerate tables.
 
 2011-06-15  Ulrich Drepper  <drepper@gmail.com>
 
diff --git a/iconvdata/gb18030.c b/iconvdata/gb18030.c
index 4c8148fcc2..e3aaac2eb0 100644
--- a/iconvdata/gb18030.c
+++ b/iconvdata/gb18030.c
@@ -24324,17 +24324,17 @@ static const unsigned char __ucs_to_gb18030_tab2[][2] =
 	    len = 4;							      \
 	  }								      \
 	else if (ch == 0x20087)						      \
-	  idx = 0xfe51;							      \
+	  cp = (const unsigned char *) "\xfe\x51";			      \
 	else if (ch == 0x20089)						      \
-	  idx = 0xfe52;							      \
+	  cp = (const unsigned char *) "\xfe\x52";			      \
 	else if (ch == 0x200CC)						      \
-	  idx = 0xfe53;							      \
+	  cp = (const unsigned char *) "\xfe\x53";			      \
 	else if (ch == 0x215d7)						      \
-	  idx = 0xfe6c;							      \
+	  cp = (const unsigned char *) "\xfe\x6c";			      \
 	else if (ch == 0x2298F)						      \
-	  idx = 0xfe76;							      \
+	  cp = (const unsigned char *) "\xfe\x76";			      \
 	else if (ch == 0x241FE)						      \
-	  idx = 0xfe91;							      \
+	  cp = (const unsigned char *) "\xfe\x91";			      \
 	else if (ch >= 0x10000 && ch <= 0x10FFFF)			      \
 	  {								      \
 	    idx = ch + 0x1E248;						      \
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index 3c5e52f663..ea4763f590 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -883,6 +883,9 @@ gaih_inet (const char *name, const struct gaih_service *service,
 
 		  if (status == NSS_STATUS_SUCCESS)
 		    {
+		      assert (!no_data);
+		      no_data = 1;
+
 		      if ((req->ai_flags & AI_CANONNAME) != 0 && canon == NULL)
 			canon = (*pat)->name;
 
@@ -898,27 +901,20 @@ gaih_inet (const char *name, const struct gaih_service *service,
 			      pataddr[2] = htonl (0xffff);
 			      pataddr[1] = 0;
 			      pataddr[0] = 0;
-			      pat = &(*pat)->next;
+			      pat = &((*pat)->next);
+			      no_data = 0;
 			    }
-			  else if ((req->ai_family == AF_UNSPEC
-				    || (*pat)->family == req->ai_family))
+			  else if (req->ai_family == AF_UNSPEC
+				   || (*pat)->family == req->ai_family)
 			    {
-			      if ((*pat)->family == AF_INET6)
+			      pat = &((*pat)->next);
+
+			      no_data = 0;
+			      if (req->ai_family == AF_INET6)
 				got_ipv6 = true;
-			      pat = &(*pat)->next;
-			    }
-			  else if (*pat == at)
-			    {
-			      if ((*pat)->next != NULL)
-				memcpy (*pat, (*pat)->next, sizeof (**pat));
-			      else
-				{
-				  no_data = 1;
-				  break;
-				}
 			    }
 			  else
-			    *pat = (*pat)->next;
+			    *pat = ((*pat)->next);
 			}
 		    }