aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <pcarlini@unitus.it>2002-01-30 22:00:40 +0100
committerPaolo Carlini <paolo@gcc.gnu.org>2002-01-30 21:00:40 +0000
commitf2e7381d8e6ae8401be24fdc3b132ee59d66dbff (patch)
treef27444366e9bc7b064f14b74d6090599626c1e96
parenta852d50fb4f376a7bd79a9b05025dbc5590da378 (diff)
downloadgcc-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/ChangeLog8
-rw-r--r--libstdc++-v3/config/locale/numpunct_members_gnu.cc11
-rw-r--r--libstdc++-v3/testsuite/22_locale/numpunct_byname.cc17
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;
}