This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[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.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]