glibc/locale
Carlos O'Donell 87701a58e2 strcoll: Remove incorrect STRDIFF-based optimization (Bug 18589).
The optimization introduced in commit
f13c2a8dff, causes regressions in
sorting for languages that have digraphs that change sort order, like
cs_CZ which sorts ch between h and i.

My analysis shows the fast-forwarding optimization in STRCOLL advances
through a digraph while possibly stopping in the middle which results
in a subsequent skipping of the digraph and incorrect sorting. The
optimization is incorrect as implemented and because of that I'm
removing it for 2.23, and I will also commit this fix for 2.22 where
it was originally introduced.

This patch reverts the optimization, introduces a new bug-strcoll2.c
regression test that tests both cs_CZ.UTF-8 and da_DK.ISO-8859-1 and
ensures they sort one digraph each correctly. The optimization can't be
applied without regressing this test.

Checked on x86_64, bug-strcoll2.c fails without this patch and passes
after. This will also get a fix on 2.22 which has the same bug.
2015-10-08 16:41:45 -04:00
..
bits Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
programs strcoll: Remove incorrect STRDIFF-based optimization (Bug 18589). 2015-10-08 16:41:45 -04:00
C-address.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
C-collate.c strcoll: Remove incorrect STRDIFF-based optimization (Bug 18589). 2015-10-08 16:41:45 -04:00
C-ctype.c Remove unused PREDEFINED_CLASSES code 2015-06-09 09:34:06 +02:00
C-identification.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
C-measurement.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
C-messages.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
C-monetary.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
C-name.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
C-numeric.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
C-paper.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
C-telephone.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
C-time.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
C-translit.h Add #include <stdint.h> to locale/gen-translit.pl and fix C-translit.h. 2013-06-05 12:01:50 -05:00
C-translit.h.in Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
C_name.c
Makefile Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
SYS_libc.c
Versions
broken_cur_max.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
categories.def strcoll: Remove incorrect STRDIFF-based optimization (Bug 18589). 2015-10-08 16:41:45 -04:00
coll-lookup.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
coll-lookup.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
duplocale.c Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
elem-hash.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
findlocale.c Avoid unsafe loc_name type casts with additional variable 2015-02-27 22:18:56 -03:00
freelocale.c Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
gen-translit.pl Add #include <stdint.h> to locale/gen-translit.pl and fix C-translit.h. 2013-06-05 12:01:50 -05:00
global-locale.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
hashval.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
indigits.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
indigitswc.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
iso-639.def Correcting language code for Bhili and Tulu locales (bug 17475) 2015-07-15 16:06:18 +05:30
iso-3166.def Fix typos in 3166.def. 2013-10-04 18:51:42 -04:00
iso-4217.def Revert incorrect removal of the XDR currency from locale/iso-4217.def 2014-05-03 23:45:15 -06:00
langinfo.h strcoll: Remove incorrect STRDIFF-based optimization (Bug 18589). 2015-10-08 16:41:45 -04:00
lc-address.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lc-collate.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lc-ctype.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lc-identification.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lc-measurement.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lc-messages.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lc-monetary.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lc-name.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lc-numeric.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lc-paper.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lc-telephone.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
lc-time.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
loadarchive.c Also check dead->data[category] != NULL 2015-08-05 08:15:51 -07:00
loadlocale.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
locale.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
localeconv.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
localeinfo.h strcoll: Remove incorrect STRDIFF-based optimization (Bug 18589). 2015-10-08 16:41:45 -04:00
localename.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
locarchive.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mb_cur_max.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
newlocale.c Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
nl_langinfo.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
nl_langinfo_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
outdigits.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
outdigitswc.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
setlocale.c Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
strlen-hash.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-C-locale.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-duplocale.c Add missing test files. 2009-11-17 16:23:57 -08:00
tst-locname.c Add missing test files. 2009-11-17 16:23:57 -08:00
uselocale.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
weight.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
weightwc.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
xlocale.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
xlocale.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00