[Fedora-i18n-bugs] [Bug 537753] New: glibc: wcscoll/strcoll needs to check if the char is out of the locale collation.

bugzilla at redhat.com bugzilla at redhat.com
Mon Nov 16 08:55:25 UTC 2009


Please do not reply directly to this email. All additional
comments should be made in the comments box of this bug.

Summary: glibc: wcscoll/strcoll needs to check if the char is out of the locale collation.

https://bugzilla.redhat.com/show_bug.cgi?id=537753

           Summary: glibc: wcscoll/strcoll needs to check if the char is
                    out of the locale collation.
           Product: Fedora
           Version: rawhide
          Platform: All
        OS/Version: Linux
            Status: NEW
          Severity: medium
          Priority: low
         Component: glibc
        AssignedTo: schwab at redhat.com
        ReportedBy: tfujiwar at redhat.com
         QAContact: extras-qa at fedoraproject.org
                CC: jakub at redhat.com, fedora-i18n-bugs at redhat.com,
                    schwab at redhat.com
   Estimated Hours: 0.0
    Classification: Fedora
    Target Release: ---


Created an attachment (id=369656)
 --> (https://bugzilla.redhat.com/attachment.cgi?id=369656)
Example test case

Currently I'm thinking how to sort UTF-8 strings on GNOME/GDM.

GDM uses g_utf8_collate() to sort the language names.
http://git.gnome.org./cgit/glib/tree/glib/gunicollate.c

g_utf8_collate() uses wcscoll() internally.

----------------------------
 70:gint
 71: g_utf8_collate (const gchar *str1,
 72:  const gchar *str2)
 73:{
...
109:  result = wcscoll ((wchar_t *)str1_norm, (wchar_t *)str2_norm);
...
154:}
----------------------------

However if the chars are not defined in the locale collation, the returned
value is not correct.
I'm attaching the test program.
You could see the returned value is not correct on ja_JP.UTF-8.

Now I think it's better to set errno if the char is not defined in the
collation.
Regarding to WCSCOLL(3P):

----------------------------
RETURN VALUE
On  error,  wcscoll()  shall  set
       errno, but no return value is reserved to indicate an error.

ERRORS
       The wcscoll() function may fail if:

       EINVAL The  ws1  or  ws2 arguments contain wide-character codes outside
              the domain of the collating sequence.
----------------------------

If wcscoll/strcoll/wscxfrm/strxfrm would set errno, I could enhance
g_utf8_collate(_key) later.

-- 
Configure bugmail: https://bugzilla.redhat.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.




More information about the i18n-bugs mailing list