[RFH] EURO tweaks 2: problems with wchar_t
Paolo Carlini
pcarlini@unitus.it
Sun Apr 21 03:12:00 GMT 2002
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.
More information about the Libc-alpha
mailing list