diff options
author | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-02 23:06:13 +0000 |
---|---|---|
committer | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-02 23:06:13 +0000 |
commit | 633360ffc057dd358e1544f7c5f35f9d46c1df7b (patch) | |
tree | 3e91b10f93d413590759262c22b56e49c5ca436f /libstdc++-v3 | |
parent | d085eae1c1b16fcb233befb866fa5867d80aa1ad (diff) |
2003-10-02 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/locale_classes.h (locale::facet::_S_get_c_name): Add.
* src/locale.cc: Define.
* src/localename.cc: Use it.
* config/locale/generic/time_members.h: Same.
* config/locale/gnu/messages_members.h: Same.
* config/locale/gnu/time_members.h: Same.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72050 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 9 | ||||
-rw-r--r-- | libstdc++-v3/config/locale/generic/time_members.h | 6 | ||||
-rw-r--r-- | libstdc++-v3/config/locale/gnu/messages_members.h | 6 | ||||
-rw-r--r-- | libstdc++-v3/config/locale/gnu/time_members.h | 6 | ||||
-rw-r--r-- | libstdc++-v3/include/bits/locale_classes.h | 6 | ||||
-rw-r--r-- | libstdc++-v3/src/locale.cc | 4 | ||||
-rw-r--r-- | libstdc++-v3/src/localename.cc | 2 |
7 files changed, 28 insertions, 11 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 2cc15acf19a..8dd67c22c0d 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2003-10-02 Benjamin Kosnik <bkoz@redhat.com> + + * include/bits/locale_classes.h (locale::facet::_S_get_c_name): Add. + * src/locale.cc: Define. + * src/localename.cc: Use it. + * config/locale/generic/time_members.h: Same. + * config/locale/gnu/messages_members.h: Same. + * config/locale/gnu/time_members.h: Same. + 2003-10-02 Paolo Carlini <pcarlini@unitus.it> PR libstdc++/12232 diff --git a/libstdc++-v3/config/locale/generic/time_members.h b/libstdc++-v3/config/locale/generic/time_members.h index 2da37eb95b3..9801300ceca 100644 --- a/libstdc++-v3/config/locale/generic/time_members.h +++ b/libstdc++-v3/config/locale/generic/time_members.h @@ -38,7 +38,7 @@ __timepunct<_CharT>::__timepunct(size_t __refs) : facet(__refs), _M_data(NULL) { - _M_name_timepunct = _S_c_name; + _M_name_timepunct = _S_get_c_name(); _M_initialize_timepunct(); } @@ -46,7 +46,7 @@ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) : facet(__refs), _M_data(__cache) { - _M_name_timepunct = _S_c_name; + _M_name_timepunct = _S_get_c_name(); _M_initialize_timepunct(); } @@ -64,7 +64,7 @@ template<typename _CharT> __timepunct<_CharT>::~__timepunct() { - if (_S_c_name != _M_name_timepunct) + if (_M_name_timepunct != _S_get_c_name()) delete [] _M_name_timepunct; delete _M_data; _S_destroy_c_locale(_M_c_locale_timepunct); diff --git a/libstdc++-v3/config/locale/gnu/messages_members.h b/libstdc++-v3/config/locale/gnu/messages_members.h index fc2bb2eceb5..9bb8e50c438 100644 --- a/libstdc++-v3/config/locale/gnu/messages_members.h +++ b/libstdc++-v3/config/locale/gnu/messages_members.h @@ -39,7 +39,7 @@ : facet(__refs) { #if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)) - _M_name_messages = _S_c_name; + _M_name_messages = _S_get_c_name(); #endif _M_c_locale_messages = _S_get_c_locale(); } @@ -72,7 +72,7 @@ messages<_CharT>::~messages() { #if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)) - if (_S_c_name != _M_name_messages) + if (_M_name_messages != _S_get_c_name()) delete [] _M_name_messages; #endif _S_destroy_c_locale(_M_c_locale_messages); @@ -100,7 +100,7 @@ : messages<_CharT>(__refs) { #if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)) - if (this->_S_c_name != this->_M_name_messages) + if (this->_M_name_messages != locale::facet::_S_get_c_name()) delete [] this->_M_name_messages; char* __tmp = new char[std::strlen(__s) + 1]; std::strcpy(__tmp, __s); diff --git a/libstdc++-v3/config/locale/gnu/time_members.h b/libstdc++-v3/config/locale/gnu/time_members.h index 3129cd17694..142ed2bf114 100644 --- a/libstdc++-v3/config/locale/gnu/time_members.h +++ b/libstdc++-v3/config/locale/gnu/time_members.h @@ -39,7 +39,7 @@ : facet(__refs), _M_data(NULL) { #if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)) - _M_name_timepunct = _S_c_name; + _M_name_timepunct = _S_get_c_name(); #endif _M_initialize_timepunct(); } @@ -49,7 +49,7 @@ : facet(__refs), _M_data(__cache) { #if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)) - _M_name_timepunct = _S_c_name; + _M_name_timepunct = _S_get_c_name(); #endif _M_initialize_timepunct(); } @@ -72,7 +72,7 @@ __timepunct<_CharT>::~__timepunct() { #if !(__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)) - if (_S_c_name != _M_name_timepunct) + if (_M_name_timepunct != _S_get_c_name()) delete [] _M_name_timepunct; #endif delete _M_data; diff --git a/libstdc++-v3/include/bits/locale_classes.h b/libstdc++-v3/include/bits/locale_classes.h index d9502bd2ae0..e8f4e816fc2 100644 --- a/libstdc++-v3/include/bits/locale_classes.h +++ b/libstdc++-v3/include/bits/locale_classes.h @@ -224,10 +224,14 @@ namespace std static void _S_destroy_c_locale(__c_locale& __cloc); - // Returns data from the underlying "C" library for the classic locale. + // Returns data from the underlying "C" library data for the + // classic locale. static __c_locale _S_get_c_locale(); + static const char* + _S_get_c_name(); + private: inline void _M_add_reference() const throw() diff --git a/libstdc++-v3/src/locale.cc b/libstdc++-v3/src/locale.cc index 1ba83d1ae9b..7c1e8ab5b81 100644 --- a/libstdc++-v3/src/locale.cc +++ b/libstdc++-v3/src/locale.cc @@ -486,6 +486,10 @@ namespace std return _S_c_locale; } + const char* + locale::facet::_S_get_c_name() + { return _S_c_name; } + // Definitions for static const data members of time_base. template<> const char* diff --git a/libstdc++-v3/src/localename.cc b/libstdc++-v3/src/localename.cc index cb71e2fba9e..ba90ca4b5c4 100644 --- a/libstdc++-v3/src/localename.cc +++ b/libstdc++-v3/src/localename.cc @@ -258,7 +258,7 @@ namespace std for (size_t __i = 0; __i < _S_categories_size; ++__i) { _M_names[__i] = new (&name_c[__i]) char[2]; - std::strcpy(_M_names[__i], locale::facet::_S_c_name); + std::strcpy(_M_names[__i], locale::facet::_S_get_c_name()); } // This is needed as presently the C++ version of "C" locales |