patches/gcc/4.2.0/204-uclibc-locale-wchar_fix.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Feb 17 22:12:59 2008 +0000 (2008-02-17)
changeset 433 9886aa0a9694
permissions -rw-r--r--
Robert P. J. DAY says:

According to Mike Frysinger, this patch was removed from Gentoo in the
2.3.x series and didn't seem to cause any adverse effects. So toss it
from the patch directories for glibc 2.5 and up.
     1 --- gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc.uclibc200_wchar~	2006-03-10 15:32:37 +0100
     2 +++ gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc	2006-03-10 15:37:27 +0100
     3 @@ -401,7 +401,7 @@
     4  # ifdef __UCLIBC_HAS_XLOCALE__
     5  	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
     6  	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
     7 -# else
     8 +# elif defined __UCLIBC_HAS_LOCALE__
     9  	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
    10  	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
    11  # endif
    12 @@ -556,7 +556,7 @@
    13  # ifdef __UCLIBC_HAS_XLOCALE__
    14  	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
    15  	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
    16 -# else
    17 +# elif defined __UCLIBC_HAS_LOCALE__
    18  	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
    19  	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
    20  # endif
    21 --- gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc.uclibc200_wchar~	2006-03-10 15:32:37 +0100
    22 +++ gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc	2006-03-10 15:37:27 +0100
    23 @@ -127,12 +127,25 @@
    24  	{
    25  	  // Named locale.
    26  	  // NB: In the GNU model wchar_t is always 32 bit wide.
    27 +#ifdef __UCLIBC_MJN3_ONLY__
    28 +#warning fix this... should be numeric
    29 +#endif
    30 +#ifdef __UCLIBC__
    31 +# ifdef __UCLIBC_HAS_XLOCALE__
    32 +	  _M_data->_M_decimal_point = __cloc->decimal_point_wc;
    33 +	  _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
    34 +# elif defined __UCLIBC_HAS_LOCALE__
    35 +	  _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
    36 +	  _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
    37 +# endif
    38 +#else
    39  	  union { char *__s; wchar_t __w; } __u;
    40  	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
    41  	  _M_data->_M_decimal_point = __u.__w;
    42  
    43  	  __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
    44  	  _M_data->_M_thousands_sep = __u.__w;
    45 +#endif
    46  
    47  	  if (_M_data->_M_thousands_sep == L'\0')
    48  	    _M_data->_M_grouping = "";