diff options
author | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-02-15 16:47:57 +0000 |
---|---|---|
committer | paolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-02-15 16:47:57 +0000 |
commit | 8426b2f68f401e4ace43d6f0fd21062c98d12e59 (patch) | |
tree | eb15a978460c1aaecb4876c6b96497177e6ac71a /libstdc++-v3/include | |
parent | b5c49426e04c4a37bf9d0b38f0f4e70276d6a182 (diff) |
2009-02-15 Paolo Carlini <paolo.carlini@oracle.com>
PR libstdc++/39168
* src/locale_facets.cc (__verify_grouping(const char*, size_t,
const string&)): Also check that the value != CHAR_MAX.
* include/bits/locale_facets.tcc (__numpunct_cache<>::
_M_cache(const locale&), __add_grouping(_CharT*, _CharT,
const char*, size_t, const _CharT*, const _CharT*)): Likewise.
* include/bits/locale_facets_nonio.tcc (__moneypunct_cache<>::
_M_cache(const locale&)): Likewise.
* testsuite/22_locale/money_put/put/wchar_t/39168.cc: New.
* testsuite/22_locale/money_put/put/char/39168.cc: Likewise.
* testsuite/22_locale/money_get/get/wchar_t/39168.cc: Likewise.
* testsuite/22_locale/money_get/get/char/39168.cc: Likewise.
* testsuite/22_locale/num_get/get/wchar_t/39168.cc: Likewise.
* testsuite/22_locale/num_get/get/char/39168.cc: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@144190 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include')
-rw-r--r-- | libstdc++-v3/include/bits/locale_facets.tcc | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/locale_facets_nonio.tcc | 6 |
2 files changed, 9 insertions, 4 deletions
diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index 779b4d505e1..93bc6d48366 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -91,7 +91,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __np.grouping().copy(__grouping, _M_grouping_size); _M_grouping = __grouping; _M_use_grouping = (_M_grouping_size - && static_cast<signed char>(__np.grouping()[0]) > 0); + && static_cast<signed char>(_M_grouping[0]) > 0 + && (_M_grouping[0] + != __gnu_cxx::__numeric_traits<char>::__max)); _M_truename_size = __np.truename().size(); _CharT* __truename = new _CharT[_M_truename_size]; @@ -1232,7 +1234,8 @@ _GLIBCXX_END_LDBL_NAMESPACE size_t __ctr = 0; while (__last - __first > __gbeg[__idx] - && static_cast<signed char>(__gbeg[__idx]) > 0) + && static_cast<signed char>(__gbeg[__idx]) > 0 + && __gbeg[__idx] != __gnu_cxx::__numeric_traits<char>::__max) { __last -= __gbeg[__idx]; __idx < __gsize - 1 ? ++__idx : ++__ctr; diff --git a/libstdc++-v3/include/bits/locale_facets_nonio.tcc b/libstdc++-v3/include/bits/locale_facets_nonio.tcc index 9cc1b913d19..f32ad7fdb1d 100644 --- a/libstdc++-v3/include/bits/locale_facets_nonio.tcc +++ b/libstdc++-v3/include/bits/locale_facets_nonio.tcc @@ -81,8 +81,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __mp.grouping().copy(__grouping, _M_grouping_size); _M_grouping = __grouping; _M_use_grouping = (_M_grouping_size - && static_cast<signed char>(__mp.grouping()[0]) > 0); - + && static_cast<signed char>(_M_grouping[0]) > 0 + && (_M_grouping[0] + != __gnu_cxx::__numeric_traits<char>::__max)); + _M_decimal_point = __mp.decimal_point(); _M_thousands_sep = __mp.thousands_sep(); _M_frac_digits = __mp.frac_digits(); |