about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--localedata/ChangeLog4
-rw-r--r--localedata/de_DE.in6
-rw-r--r--string/strcoll_l.c24
3 files changed, 25 insertions, 9 deletions
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index 07d5185d6f..376ad87c70 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,7 @@
+2007-10-02  Ulrich Drepper  <drepper@redhat.com>
+
+	* de_DE.in: Adjust for correct handling of backward direction sorting.
+
 2007-10-01  Ulrich Drepper  <drepper@redhat.com>
 
 	[BZ #4941]
diff --git a/localedata/de_DE.in b/localedata/de_DE.in
index c56f401f64..b3b0dac29e 100644
--- a/localedata/de_DE.in
+++ b/localedata/de_DE.in
@@ -40,8 +40,8 @@ Füße (pl. of "Fuß")              : feet
 Fussel                           : fluff
 fusseln                          : to wear of fluff
 füßeln                           : play footsie [under the table]
-fußen                            : to be based [on]
 Füssen                           : Füssen (town)
+fußen                            : to be based [on]
 Füßen (dat. pl. of "Fuß")        : [to the] feet
 in Massen                        : in large numbers
 in Maßen                         : moderately
@@ -49,9 +49,9 @@ Masern                           : measels
 Mass. (Massachusetts)            : Massachusetts (state)
 Maß                              : measure
 Masse                            : mass
-Massé                            : (particular billard stroke)
 Maße (pl. of "Maß")              : measures
 mäße (pres. conj. of "messen")   : take measure (e.g. in indirect speech)
+Massé                            : (particular billard stroke)
 Massen-                          : mass; wholesale; bulk (in compound nouns)
 massig                           : massive
 mäßig                            : moderate; modest
@@ -60,8 +60,8 @@ Miß                              : Miss
 Passe                            : yoke (of dress)
 passé                            : over, gone
 Schlagerforderung                : claim, demanded in a pop song
-Schlagerförderung                : promotion of pop music
 Schlägerforderung                : demand of a hooligan
+Schlagerförderung                : promotion of pop music
 Schlägerförderung                : promotion of hooliganism :-)
 Schurz                           : apron
 Schürze                          : apron
diff --git a/string/strcoll_l.c b/string/strcoll_l.c
index c46921dcc9..8bd84b10aa 100644
--- a/string/strcoll_l.c
+++ b/string/strcoll_l.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995,96,97,2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1995,96,97,2002, 2004, 2007 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Written by Ulrich Drepper <drepper@gnu.org>, 1995.
 
@@ -128,7 +128,7 @@ STRCOLL (s1, s2, l)
 
      Please note that the localedef programs makes sure that `position'
      is not used at the first level.  */
-  if (! __libc_use_alloca (s1len + s2len))
+  if (! __libc_use_alloca ((s1len + s2len) * (sizeof (int32_t) + 1)))
     {
       idx1arr = (int32_t *) malloc ((s1len + s2len) * (sizeof (int32_t) + 1));
       idx2arr = &idx1arr[s1len];
@@ -186,7 +186,10 @@ STRCOLL (s1, s2, l)
 		    /* The last pushed character was handled.  Continue
 		       with forward characters.  */
 		    if (idx1cnt < idx1max)
-		      idx1now = idx1cnt;
+		      {
+			idx1now = idx1cnt;
+			backw1_stop = ~0ul;
+		      }
 		    else
 		      /* Nothing anymore.  The backward sequence ended with
 			 the last sequence in the string.  Note that seq1len
@@ -245,7 +248,10 @@ STRCOLL (s1, s2, l)
 		    /* The last pushed character was handled.  Continue
 		       with forward characters.  */
 		    if (idx2cnt < idx2max)
-		      idx2now = idx2cnt;
+		      {
+			idx2now = idx2cnt;
+			backw2_stop = ~0ul;
+		      }
 		    else
 		      /* Nothing anymore.  The backward sequence ended with
 			 the last sequence in the string.  Note that seq2len
@@ -370,7 +376,10 @@ STRCOLL (s1, s2, l)
 			/* The last pushed character was handled.  Continue
 			   with forward characters.  */
 			if (idx1cnt < idx1max)
-			  idx1now = idx1cnt;
+			  {
+			    idx1now = idx1cnt;
+			    backw1_stop = ~0ul;
+			  }
 			else
 			  {
 			    /* Nothing anymore.  The backward sequence
@@ -426,7 +435,10 @@ STRCOLL (s1, s2, l)
 			/* The last pushed character was handled.  Continue
 			   with forward characters.  */
 			if (idx2cnt < idx2max)
-			  idx2now = idx2cnt;
+			  {
+			    idx2now = idx2cnt;
+			    backw2_stop = ~0ul;
+			  }
 			else
 			  {
 			    /* Nothing anymore.  The backward sequence