Package: locales
Version: 2.3.6-3
Severity: normal

Collating is seriously broken when using Czech locales. Calls to strcoll(3)
return wrong results. See this simple testcase which compares a string
with itself:
----------------------------------------------------------------------
#include <string.h>
#include <stdio.h>
#include <locale.h>

const char foo[] = "filename.ext";

int main()
{
        int r;
        setlocale(LC_ALL, "");
        r = strcoll(foo, foo);
        printf("Comparing string %s to %s returned %d\n", foo, foo, r);
        return !!r;
}
----------------------------------------------------------------------

Here are the results:

[EMAIL PROTECTED]:~/c$ ./strcoll-test-simple
Comparing string filename.ext to filename.ext returned -10
[EMAIL PROTECTED]:~/c$ LC_COLLATE=cs_CZ.ISO-8859-2 ./strcoll-test-simple
Comparing string filename.ext to filename.ext returned -16
[EMAIL PROTECTED]:~/c$ LC_COLLATE=en_US.UTF-8 ./strcoll-test-simple
Comparing string filename.ext to filename.ext returned 0
[EMAIL PROTECTED]:~/c$ LC_COLLATE=C ./strcoll-test-simple
Comparing string filename.ext to filename.ext returned 0
[EMAIL PROTECTED]:~/c$

As you can see, when I use any of the two Czech locales, I get a wrong
result. Other locales work fine.

I first noticed the bug with a recursive diff of two directories.
Recursive diff uses strcoll to sort directory entries and gets seriously 
confused.

I think I'm also seeing another symptom of this bug - inkscape takes
ages to start and eats lots of memory when run with LC_COLLATE set to
"cs_CZ" or "cs_CZ.UTF-8". This doesn't happen with any other locale I've
tried.

Michal


-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Shell:  /bin/sh linked to /bin/dash
Kernel: Linux 2.6.16-rc5
Locale: LANG=cs_CZ.UTF-8, LC_CTYPE=cs_CZ.UTF-8 (charmap=UTF-8)

Versions of packages locales depends on:
ii  debconf [debconf-2.0]         1.4.72     Debian configuration management sy
ii  libc6 [glibc-2.3.6-2]         2.3.6-3    GNU C Library: Shared libraries an

locales recommends no packages.

-- debconf information:
* locales/default_environment_locale: cs_CZ.UTF-8
* locales/locales_to_be_generated: cs_CZ ISO-8859-2, cs_CZ.UTF-8 UTF-8, 
da_DK.UTF-8 UTF-8, en_US ISO-8859-1, en_US.UTF-8 UTF-8, tr_TR.UTF-8 UTF-8


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to