This is the mail archive of the
libc-locales@sourceware.org
mailing list for the GNU libc locales project.
[Bug localedata/14247] New: newlocale doesn't always set errno uponfailure return
- From: "law at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: libc-locales at sources dot redhat dot com
- Date: Fri, 15 Jun 2012 03:45:50 +0000
- Subject: [Bug localedata/14247] New: newlocale doesn't always set errno uponfailure return
- Auto-submitted: auto-generated
http://sourceware.org/bugzilla/show_bug.cgi?id=14247
Bug #: 14247
Summary: newlocale doesn't always set errno upon failure return
Product: glibc
Version: 2.15
Status: NEW
Severity: normal
Priority: P2
Component: localedata
AssignedTo: unassigned@sourceware.org
ReportedBy: law@redhat.com
CC: libc-locales@sources.redhat.com
Classification: Unclassified
Created attachment 6449
--> http://sourceware.org/bugzilla/attachment.cgi?id=6449
Potential fix
newlocale() neglects to set errno to an appropriate value when failing, if it
has already been asked about the same incorrect locale name.
#include <stdio.h>
#include <errno.h>
#include <locale.h>
int
main(int argc, char **argv)
{
locale_t loc;
setlocale(LC_ALL, "C");
errno = 0;
loc = newlocale(LC_COLLATE_MASK | LC_CTYPE_MASK,
"nb_no.utf8",
0);
printf("result = %p errno = %d\n", loc, errno);
errno = 0;
loc = newlocale(LC_COLLATE_MASK | LC_CTYPE_MASK,
"nb_no.utf8",
0);
printf("result = %p errno = %d\n", loc, errno);
return 0;
}
Actual results:
result = (nil) errno = 2
result = (nil) errno = 0
Expected results:
result = (nil) errno = 2
result = (nil) errno = 2 (or at least something other than 0)
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.