diff options
author | Paolo Carlini <pcarlini@unitus.it> | 2002-01-30 22:00:40 +0100 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2002-01-30 21:00:40 +0000 |
commit | f2e7381d8e6ae8401be24fdc3b132ee59d66dbff (patch) | |
tree | f27444366e9bc7b064f14b74d6090599626c1e96 | |
parent | a852d50fb4f376a7bd79a9b05025dbc5590da378 (diff) | |
download | gcc-f2e7381d8e6ae8401be24fdc3b132ee59d66dbff.zip gcc-f2e7381d8e6ae8401be24fdc3b132ee59d66dbff.tar.gz gcc-f2e7381d8e6ae8401be24fdc3b132ee59d66dbff.tar.bz2 |
2002-01-30 Paolo Carlini <pcarlini@unitus.it>
* config/locale/numpunct_members_gnu.cc
(numpunct<char, wchar_t>::_M_initialize_numpunct()):
Fix initialization of _M_grouping for locales which have
_M_thousands_sep == '\0'(L'\0', respectively).
* testsuite/22_locale/numpunct_byname.cc (test02): Add test.
From-SVN: r49343
-rw-r--r-- | libstdc++-v3/ChangeLog | 8 | ||||
-rw-r--r-- | libstdc++-v3/config/locale/numpunct_members_gnu.cc | 11 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/22_locale/numpunct_byname.cc | 17 |
3 files changed, 34 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 05ff24c..3412605 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,13 @@ 2002-01-30 Paolo Carlini <pcarlini@unitus.it> + * config/locale/numpunct_members_gnu.cc + (numpunct<char, wchar_t>::_M_initialize_numpunct()): + Fix initialization of _M_grouping for locales which have + _M_thousands_sep == '\0'(L'\0', respectively). + * testsuite/22_locale/numpunct_byname.cc (test02): Add test. + +2002-01-30 Paolo Carlini <pcarlini@unitus.it> + * testsuite/27_io/ostream_inserter_arith.cc (test03): Better fix for 32/64 bit architectures, avoiding the implicit assumption that CHAR_BIT == 8. diff --git a/libstdc++-v3/config/locale/numpunct_members_gnu.cc b/libstdc++-v3/config/locale/numpunct_members_gnu.cc index de9e386..4284c7c 100644 --- a/libstdc++-v3/config/locale/numpunct_members_gnu.cc +++ b/libstdc++-v3/config/locale/numpunct_members_gnu.cc @@ -53,7 +53,11 @@ namespace std // Named locale. _M_decimal_point = *(__nl_langinfo_l(RADIXCHAR, __cloc)); _M_thousands_sep = *(__nl_langinfo_l(THOUSEP, __cloc)); - _M_grouping = __nl_langinfo_l(GROUPING, __cloc); + // Check for NUL, which implies no grouping. + if (_M_thousands_sep == '\0') + _M_grouping = ""; + else + _M_grouping = __nl_langinfo_l(GROUPING, __cloc); } // NB: There is no way to extact this info from posix locales. // _M_truename = __nl_langinfo_l(YESSTR, __cloc); @@ -79,7 +83,10 @@ namespace std // Named locale. _M_decimal_point = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w); _M_thousands_sep = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w); - _M_grouping = __nl_langinfo_l(GROUPING, __cloc); + if (_M_thousands_sep == L'\0') + _M_grouping = ""; + else + _M_grouping = __nl_langinfo_l(GROUPING, __cloc); } // NB: There is no way to extact this info from posix locales. // _M_truename = __nl_langinfo_l(YESSTR, __cloc); diff --git a/libstdc++-v3/testsuite/22_locale/numpunct_byname.cc b/libstdc++-v3/testsuite/22_locale/numpunct_byname.cc index 6b6d7d8..4c69b29 100644 --- a/libstdc++-v3/testsuite/22_locale/numpunct_byname.cc +++ b/libstdc++-v3/testsuite/22_locale/numpunct_byname.cc @@ -72,9 +72,26 @@ void test01() VERIFY( dp1 != dp3 ); } +void test02() +{ + using namespace std; + + bool test = true; + + locale loc_it("it_IT"); + + const numpunct<char>& nump_it = use_facet<numpunct<char> >(loc_it); + + string g = nump_it.grouping(); + + VERIFY( g == "" ); +} + + int main() { test01(); + test02(); return 0; } |