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 + + * de_DE.in: Adjust for correct handling of backward direction sorting. + 2007-10-01 Ulrich Drepper [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 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 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 , 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