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
programs strcoll: Remove incorrect STRDIFF-based optimization (Bug 18589). 2015-10-08 16:41:45 -04:00
broken_cur_max.c
C_name.c
C-address.c
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
C-measurement.c
C-messages.c
C-monetary.c
C-name.c
C-numeric.c
C-paper.c
C-telephone.c
C-time.c
C-translit.h
C-translit.h.in
categories.def strcoll: Remove incorrect STRDIFF-based optimization (Bug 18589). 2015-10-08 16:41:45 -04:00
coll-lookup.c
coll-lookup.h
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
findlocale.c
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
global-locale.c
hashval.h
indigits.h
indigitswc.h
iso-639.def Correcting language code for Bhili and Tulu locales (bug 17475) 2015-07-15 16:06:18 +05:30
iso-3166.def
iso-4217.def
langinfo.h strcoll: Remove incorrect STRDIFF-based optimization (Bug 18589). 2015-10-08 16:41:45 -04:00
lc-address.c
lc-collate.c
lc-ctype.c
lc-identification.c
lc-measurement.c
lc-messages.c
lc-monetary.c
lc-name.c
lc-numeric.c
lc-paper.c
lc-telephone.c
lc-time.c
loadarchive.c Also check dead->data[category] != NULL 2015-08-05 08:15:51 -07:00
loadlocale.c
locale.h
localeconv.c
localeinfo.h strcoll: Remove incorrect STRDIFF-based optimization (Bug 18589). 2015-10-08 16:41:45 -04:00
localename.c
locarchive.h
Makefile
mb_cur_max.c
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_l.c
nl_langinfo.c
outdigits.h
outdigitswc.h
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
SYS_libc.c
tst-C-locale.c
tst-duplocale.c
tst-locname.c
uselocale.c
Versions
weight.h
weightwc.h
xlocale.c
xlocale.h