diff options
author | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-02 19:02:58 +0000 |
---|---|---|
committer | bkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-10-02 19:02:58 +0000 |
commit | 5645a613d8787659f16b231e38f1d26699178912 (patch) | |
tree | 96d3b51677789265c4a94aebe9121a35f7083829 /libstdc++-v3 | |
parent | 0f843d89c21e86f6950f46b3c08173b3d30b9f3e (diff) |
2003-10-02 Benjamin Kosnik <bkoz@redhat.com>
* src/locale.cc (locale::_S_initialize): Use __gthread_active_p.
(locale::facet::_S_get_c_locale): Same.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@72045 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/src/locale.cc | 22 |
2 files changed, 19 insertions, 8 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 59b6bffa2da..7224004a186 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,10 @@ 2003-10-02 Benjamin Kosnik <bkoz@redhat.com> + * src/locale.cc (locale::_S_initialize): Use __gthread_active_p. + (locale::facet::_S_get_c_locale): Same. + +2003-10-02 Benjamin Kosnik <bkoz@redhat.com> + * config/linker-map.gnu: Export _S_get_c_locale instead of _S_c_locale object. diff --git a/libstdc++-v3/src/locale.cc b/libstdc++-v3/src/locale.cc index b37b30c43c2..1ba83d1ae9b 100644 --- a/libstdc++-v3/src/locale.cc +++ b/libstdc++-v3/src/locale.cc @@ -385,11 +385,14 @@ namespace std locale::_S_initialize() { #ifdef __GTHREADS - __gthread_once(&_S_once, _S_initialize_once); -#else - if (!_S_classic) - _S_initialize_once(); + if (__gthread_active_p()) + __gthread_once(&_S_once, _S_initialize_once); + else #endif + { + if (!_S_classic) + _S_initialize_once(); + } } void @@ -472,11 +475,14 @@ namespace std locale::facet::_S_get_c_locale() { #ifdef __GHTREADS - __gthread_once(&_S_once, _S_initialize_once); -#else - if (!_S_c_locale) - _S_initialize_once(); + if (__gthread_active_p()) + __gthread_once(&_S_once, _S_initialize_once); + else #endif + { + if (!_S_c_locale) + _S_initialize_once(); + } return _S_c_locale; } |