glibc/wcsmbs
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
btowc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
c16rtomb.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Depend
isoc99_fwscanf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
isoc99_swscanf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
isoc99_vfwscanf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
isoc99_vswscanf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
isoc99_vwscanf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
isoc99_wscanf.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Makefile S390: Optimize wmemset. 2015-08-26 10:26:25 +02:00
mbrlen.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mbrtoc16.c Handle mblen return code when n is zero. 2015-04-03 15:47:12 +02:00
mbrtowc.c Handle mblen return code when n is zero. 2015-04-03 15:47:12 +02:00
mbsinit.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mbsnrtowcs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mbsrtowcs_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
mbsrtowcs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
test-wcpcpy.c S390: Optimize stpcpy and wcpcpy. 2015-08-26 10:26:21 +02:00
test-wcpncpy.c S390: Optimize stpncpy and wcpncpy. 2015-08-26 10:26:21 +02:00
test-wcscat.c S390: Optimize strcat and wcscat. 2015-08-26 10:26:21 +02:00
test-wcschr.c
test-wcschrnul.c S390: Optimize strchrnul and wcschrnul. 2015-08-26 10:26:23 +02:00
test-wcscmp.c
test-wcscpy.c
test-wcscspn.c S390: Optimize strcspn and wcscspn. 2015-08-26 10:26:24 +02:00
test-wcslen.c
test-wcsncat.c S390: Optimize strncat wcsncat. 2015-08-26 10:26:22 +02:00
test-wcsncmp.c Use correct signedness in wcsncmp 2015-04-13 21:25:04 +02:00
test-wcsncpy.c S390: Optimize strncpy and wcsncpy. 2015-08-26 10:26:21 +02:00
test-wcsnlen.c S390: Optimize strnlen and wcsnlen. 2015-08-26 10:26:20 +02:00
test-wcspbrk.c S390: Optimize strpbrk and wcspbrk. 2015-08-26 10:26:24 +02:00
test-wcsrchr.c
test-wcsspn.c S390: Optimize strspn and wcsspn. 2015-08-26 10:26:24 +02:00
test-wmemchr.c S390: Optimize memchr, rawmemchr and wmemchr. 2015-08-26 10:26:24 +02:00
test-wmemcmp.c
test-wmemset.c S390: Optimize wmemset. 2015-08-26 10:26:25 +02:00
tst-btowc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-c16c32-1.c
tst-mbrtowc2.c
tst-mbrtowc.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-mbsrtowcs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-wchar-h.c
tst-wcpncpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-wcrtomb.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-wcsnlen.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
tst-wcstof.c
uchar.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Versions
wchar.h Updated __nonnull annotations for wcscat, wcsncat, wcscmp and wcsncmp [BZ #18265] 2015-08-05 04:43:42 -04:00
wcpcpy.c S390: Optimize stpcpy and wcpcpy. 2015-08-26 10:26:21 +02:00
wcpncpy.c S390: Optimize stpncpy and wcpncpy. 2015-08-26 10:26:21 +02:00
wcrtomb.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcsatcliff.c
wcscasecmp_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcscasecmp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcscat.c S390: Optimize strcat and wcscat. 2015-08-26 10:26:21 +02:00
wcschr.c powerpc: Fix __wcschr static build 2015-04-15 16:01:48 -03:00
wcschrnul.c S390: Optimize strchrnul and wcschrnul. 2015-08-26 10:26:23 +02:00
wcscmp.c Fix regcomp wcscoll, wcscmp namespace (bug 18497). 2015-06-09 21:07:30 +00:00
wcscoll_l.c strcoll: Remove incorrect STRDIFF-based optimization (Bug 18589). 2015-10-08 16:41:45 -04:00
wcscoll.c Fix regcomp wcscoll, wcscmp namespace (bug 18497). 2015-06-09 21:07:30 +00:00
wcscpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcscspn.c S390: Optimize strcspn and wcscspn. 2015-08-26 10:26:24 +02:00
wcsdup.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcslen.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcsmbs-tst1.c
wcsmbsload.c Move bits/libc-lock.h and bits/libc-lockP.h out of bits/ (bug 14912). 2015-09-08 21:11:03 +00:00
wcsmbsload.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcsncase_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcsncase.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcsncat.c S390: Optimize strncat wcsncat. 2015-08-26 10:26:22 +02:00
wcsncmp.c S390: Optimize strncmp and wcsncmp. 2015-08-26 10:26:22 +02:00
wcsncpy.c S390: Optimize strncpy and wcsncpy. 2015-08-26 10:26:21 +02:00
wcsnlen.c S390: Optimize strnlen and wcsnlen. 2015-08-26 10:26:20 +02:00
wcsnrtombs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcspbrk.c S390: Optimize strpbrk and wcspbrk. 2015-08-26 10:26:24 +02:00
wcsrchr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcsrtombs.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcsspn.c S390: Optimize strspn and wcsspn. 2015-08-26 10:26:24 +02:00
wcsstr.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstod_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstod.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstof_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstof.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstok.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstol_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstol.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstold_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstold.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstoll_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstoll.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstoul_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstoul.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstoull_l.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcstoull.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcswidth.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcsxfrm_l.c Remove unused definitions 2015-02-11 12:50:53 +01:00
wcsxfrm.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wctob.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcwidth.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wcwidth.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wmemchr.c S390: Optimize memchr, rawmemchr and wmemchr. 2015-08-26 10:26:24 +02:00
wmemcmp.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wmemcpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wmemmove.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wmempcpy.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
wmemset.c S390: Optimize wmemset. 2015-08-26 10:26:25 +02:00