aboutsummaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2003-10-02 19:02:58 +0000
committerbkoz <bkoz@138bc75d-0d04-0410-961f-82ee72b054a4>2003-10-02 19:02:58 +0000
commit5645a613d8787659f16b231e38f1d26699178912 (patch)
tree96d3b51677789265c4a94aebe9121a35f7083829 /libstdc++-v3
parent0f843d89c21e86f6950f46b3c08173b3d30b9f3e (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/ChangeLog5
-rw-r--r--libstdc++-v3/src/locale.cc22
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;
}