This is the mail archive of the
libc-alpha@sources.redhat.com
mailing list for the glibc project.
[RFH] EURO tweaks 2: problems with wchar_t
- From: Paolo Carlini <pcarlini at unitus dot it>
- To: libc-alpha <libc-alpha at sources dot redhat dot com>
- Cc: libstdc++ at gcc dot gnu dot org, Ulrich Drepper <drepper at redhat dot com>
- Date: Sun, 21 Apr 2002 11:30:51 +0200
- Subject: [RFH] EURO tweaks 2: problems with wchar_t
Hi again,
I hope this time my Request For Help is less stupid than the previous
one... The char tweaks should be ok now in my local tree, but I'm still
having troubles with the corresponding wchar_t case.
The following is a testcase corresponding to a function in v3 which
apparently does'nt work well with \224 as the monetary symbol:
//-------------------------------------------------
#define _GNU_SOURCE 1
#include <locale.h>
#include <langinfo.h>
#include <wchar.h>
int main()
{
__locale_t loc;
size_t __len, __len2;
mbstate_t __state;
const char* __ccurr;
wchar_t* _M_curr_symbol;
const char* __s = "de_DE@euro";
loc = __newlocale(1 << LC_ALL, __s, 0);
__ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, loc);
__len = strlen(__ccurr);
if (__len)
{
++__len;
memset(&__state, 0, sizeof(mbstate_t));
wchar_t* __wcs = (wchar_t*) malloc(sizeof(wchar_t) * __len);
__len2 = mbsrtowcs(__wcs, &__ccurr, __len, &__state);
_M_curr_symbol = __wcs;
}
__freelocale(loc);
return 0;
}
//---------------------------------------------------
What happens is that mbsrtowcs returns (size_t) -1 for the given __ccurr (*__ccurr = \224)
Any hints? Please let me know if you need some additional details or debugging informations.
Thanks in advance,
Paolo.
P.S. I'm on i686-pc-linux-gnu, stock glibc2.2.5.