Red Hat Bugzilla – Bug 737778
setlocale() fails if LC_CTYPE is set to Turkish locale
Last modified: 2016-11-24 11:16:08 EST
+++ This bug was initially created as a clone of Bug #726536 +++ Description of problem: If the current locale is Turkish, setting a new locale fails if the locale contains an 'I'. Steps to Reproduce: Compile and run: #include <stdio.h> #include <locale.h> int main(void) { char *s; printf("%s\n", setlocale(LC_CTYPE, "tr_TR")); printf("%s\n", setlocale(LC_CTYPE, NULL)); s = setlocale(LC_CTYPE, "tr_TR.ISO8859-9"); printf("%s\n", s ? s : "null"); return 0; } Actual results: [stefan@fedora-14-amd64 ~]$ ./xxx tr_TR tr_TR null Expected results: tr_TR tr_TR tr_TR.ISO8859-9 Additional info: My guess is that somewhere tolower() fails to convert the 'I' to a proper lowercase 'i' if LC_CTYPE is Turkish. This issue currently causes failures in the Fedora buildbot for the Python project: http://www.python.org/dev/buildbot/all/builders/AMD64%20Fedora%20without%20threads%203.x/builds/457/steps/test/logs/stdio ====================================================================== ERROR: test_getsetlocale_issue1813 (test.test_locale.TestMiscellaneous) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/buildbot/buildarea/3.x.krah-fedora/build/Lib/test/test_locale.py", line 406, in test_getsetlocale_issue1813 locale.setlocale(locale.LC_CTYPE, loc) File "/home/buildbot/buildarea/3.x.krah-fedora/build/Lib/locale.py", line 538, in setlocale return _setlocale(category, locale) locale.Error: unsupported locale setting ---------------------------------------------------------------------- See also: http://bugs.python.org/issue1813 --- Additional comment from stefan-usenet@bytereef.org on 2011-08-02 09:16:14 EDT --- The test case works with libc-2.11.1: Ubuntu Lucid (libc-2.11.1), OpenSUSE (libc-2.11.1) But not with: Fedora 14 (libc-2.13), Fedora 12 ( libc-2.11.2), Debian lenny (libc-2.7), Gentoo (libc-2.13-r2) If this is a regression in glibc, perhaps the priority should be raised (or set). --- Additional comment from updates@fedoraproject.org on 2011-08-15 06:58:02 EDT --- glibc-2.14.90-5 has been submitted as an update for Fedora 16. https://admin.fedoraproject.org/updates/glibc-2.14.90-5 --- Additional comment from updates@fedoraproject.org on 2011-08-15 10:59:55 EDT --- glibc-2.14-6 has been submitted as an update for Fedora 15. https://admin.fedoraproject.org/updates/glibc-2.14-6 --- Additional comment from updates@fedoraproject.org on 2011-08-15 16:25:32 EDT --- Package glibc-2.14.90-5: * should fix your issue, * was pushed to the Fedora 16 testing repository, * should be available at your local mirror within two days. Update it with: # su -c 'yum update --enablerepo=updates-testing glibc-2.14.90-5' as soon as you are able to. Please go to the following url: https://admin.fedoraproject.org/updates/glibc-2.14.90-5 then log in and leave karma (feedback). --- Additional comment from stefan-usenet@bytereef.org on 2011-08-16 16:51:48 EDT --- Since the (automated) message asked me to test: Yes, of course I could, but all download links for Fedora-16 pre-release still point to Fedora-15-beta: http://fedoraproject.org/get-prerelease.html Is there an easy way (preferably a network install iso) to get Fedora-16 alpha? --- Additional comment from updates@fedoraproject.org on 2011-08-24 11:27:20 EDT --- glibc-2.14.90-6 has been submitted as an update for Fedora 16. https://admin.fedoraproject.org/updates/glibc-2.14.90-6 --- Additional comment from updates@fedoraproject.org on 2011-09-02 03:19:03 EDT --- glibc-2.14.90-7 has been submitted as an update for Fedora 16. https://admin.fedoraproject.org/updates/glibc-2.14.90-7 --- Additional comment from updates@fedoraproject.org on 2011-09-08 11:04:56 EDT --- glibc-2.14-7 has been submitted as an update for Fedora 15. https://admin.fedoraproject.org/updates/glibc-2.14-7
This is also present in RHEL6.1 [per@rhel6u1 ~]$ cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.1 (Santiago) [per@rhel6u1 ~]$ rpm -q glibc glibc-2.12-1.25.el6_1.3.x86_64 [per@rhel6u1 ~]$ cat locale_test.c #include <stdio.h> #include <locale.h> int main(void) { char *s; printf("%s\n", setlocale(LC_CTYPE, "tr_TR")); // printf("%s\n", setlocale(LC_CTYPE, "tr_TR.ISO8859-9")); printf("%s\n", setlocale(LC_CTYPE, NULL)); s = setlocale(LC_CTYPE, "tr_TR.ISO8859-9"); printf("%s\n", s ? s : "null"); return 0; } [per@rhel6u1 ~]$ gcc locale_test.c [per@rhel6u1 ~]$ ./a.out tr_TR tr_TR null
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHSA-2011-1526.html