This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug libc/15736] New: mismatch between strcasecmp and toupper/tolower in tr_TR.iso88599 locale
- From: "vincent-srcware at vinc17 dot net" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Fri, 12 Jul 2013 17:50:51 +0000
- Subject: [Bug libc/15736] New: mismatch between strcasecmp and toupper/tolower in tr_TR.iso88599 locale
- Auto-submitted: auto-generated
http://sourceware.org/bugzilla/show_bug.cgi?id=15736
Bug ID: 15736
Summary: mismatch between strcasecmp and toupper/tolower in
tr_TR.iso88599 locale
Product: glibc
Version: 2.17
Status: NEW
Severity: normal
Priority: P2
Component: libc
Assignee: unassigned at sourceware dot org
Reporter: vincent-srcware at vinc17 dot net
CC: drepper.fsp at gmail dot com
There is a mismatch between strcasecmp and toupper/tolower in the
tr_TR.iso88599 locale:
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <ctype.h>
#include <strings.h>
int main (void)
{
int i, j, k;
char *infs[] = { "INF", "inf" };
if (setlocale (LC_ALL, "") == NULL)
{
fprintf (stderr, "locale-test: can't set locales\n");
exit (EXIT_FAILURE);
}
for (i = 0; i < 2; i++)
for (j = 0; j < 4; j++)
{
char s[4];
for (k = 0; k < 3; k++)
{
s[k] = infs[i][k];
if (j > k)
s[k] = (i ? toupper : tolower)(s[k]);
}
s[3] = '\0';
printf ("%d%d %s\n",
!strcasecmp (s, "INF"), !strcasecmp (s, "inf"), s);
}
return 0;
}
gives:
11 INF
00 ÄNF
00 ÄnF
00 Änf
11 inf
00 Änf
00 ÄNf
00 ÄNF
Since the modifications of the string have been done with toupper and tolower,
I would have expected 11 everywhere.
Tested on Debian/unstable (amd64). Corresponding bug report:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=716775
--
You are receiving this mail because:
You are on the CC list for the bug.