blob: d7dbe68bd2fe92b1340bfb37f44251301d76a595 [file] [log] [blame]
Patrick Williamsd8c66bc2016-06-20 12:57:21 -05001From b1298344f0c221c382a95af689f7f3ecd864f531 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 29 Mar 2013 08:45:57 +0400
4Subject: [PATCH 06/46] uclibc-locale-wchar_fix
5
6Signed-off-by: Khem Raj <raj.khem@gmail.com>
7
8Upstream-Status: Pending
9---
10 libstdc++-v3/config/locale/uclibc/monetary_members.cc | 4 ++--
11 libstdc++-v3/config/locale/uclibc/numeric_members.cc | 13 +++++++++++++
12 2 files changed, 15 insertions(+), 2 deletions(-)
13
14diff --git a/libstdc++-v3/config/locale/uclibc/monetary_members.cc b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
15index 2e6f80a..31ebb9f 100644
16--- a/libstdc++-v3/config/locale/uclibc/monetary_members.cc
17+++ b/libstdc++-v3/config/locale/uclibc/monetary_members.cc
18@@ -401,7 +401,7 @@ namespace std
19 # ifdef __UCLIBC_HAS_XLOCALE__
20 _M_data->_M_decimal_point = __cloc->decimal_point_wc;
21 _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
22-# else
23+# elif defined __UCLIBC_HAS_LOCALE__
24 _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
25 _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
26 # endif
27@@ -556,7 +556,7 @@ namespace std
28 # ifdef __UCLIBC_HAS_XLOCALE__
29 _M_data->_M_decimal_point = __cloc->decimal_point_wc;
30 _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
31-# else
32+# elif defined __UCLIBC_HAS_LOCALE__
33 _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
34 _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
35 # endif
36diff --git a/libstdc++-v3/config/locale/uclibc/numeric_members.cc b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
37index 2c70642..d5c8961 100644
38--- a/libstdc++-v3/config/locale/uclibc/numeric_members.cc
39+++ b/libstdc++-v3/config/locale/uclibc/numeric_members.cc
40@@ -127,12 +127,25 @@ namespace std
41 {
42 // Named locale.
43 // NB: In the GNU model wchar_t is always 32 bit wide.
44+#ifdef __UCLIBC_MJN3_ONLY__
45+#warning fix this... should be numeric
46+#endif
47+#ifdef __UCLIBC__
48+# ifdef __UCLIBC_HAS_XLOCALE__
49+ _M_data->_M_decimal_point = __cloc->decimal_point_wc;
50+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
51+# elif defined __UCLIBC_HAS_LOCALE__
52+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
53+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
54+# endif
55+#else
56 union { char *__s; wchar_t __w; } __u;
57 __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
58 _M_data->_M_decimal_point = __u.__w;
59
60 __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
61 _M_data->_M_thousands_sep = __u.__w;
62+#endif
63
64 if (_M_data->_M_thousands_sep == L'\0')
65 _M_data->_M_grouping = "";
66--
672.6.3
68