diff options
author | Benjamin Kosnik <bkoz@redhat.com> | 2006-10-10 10:14:13 +0000 |
---|---|---|
committer | Benjamin Kosnik <bkoz@gcc.gnu.org> | 2006-10-10 10:14:13 +0000 |
commit | 8ba9f0133450c920cfd936ebdf26b19f016b10d5 (patch) | |
tree | c2c560cabcd5a9374d25b6f6dd7da8d5c1b3bcb1 | |
parent | 599a964a52716fadaa2e70337d36c54b9585cf0e (diff) | |
download | gcc-8ba9f0133450c920cfd936ebdf26b19f016b10d5.zip gcc-8ba9f0133450c920cfd936ebdf26b19f016b10d5.tar.gz gcc-8ba9f0133450c920cfd936ebdf26b19f016b10d5.tar.bz2 |
re PR libstdc++/29118 (Timeouts in libstdc++, libjava and libgomp testsuites)
2006-10-09 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/29118
* src/locale_init.cc (__get_locale_mutex): New.
(locale::locale): Use it.
(locale::global): Use it.
From-SVN: r117600
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/src/locale_init.cc | 13 |
2 files changed, 16 insertions, 4 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c88fb998..6be5a03 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,12 @@ 2006-10-09 Benjamin Kosnik <bkoz@redhat.com> + PR libstdc++/29118 + * src/locale_init.cc (__get_locale_mutex): New. + (locale::locale): Use it. + (locale::global): Use it. + +2006-10-09 Benjamin Kosnik <bkoz@redhat.com> + PR libstdc++/29095 * libsupc++/cxxabi.h (__cxa_cdtor_type): Explicit "C" linkage. * config/cpu/arm/cxxabi_tweaks.h: Same. diff --git a/libstdc++-v3/src/locale_init.cc b/libstdc++-v3/src/locale_init.cc index 2b6b4af..a2c18dd 100644 --- a/libstdc++-v3/src/locale_init.cc +++ b/libstdc++-v3/src/locale_init.cc @@ -36,6 +36,13 @@ namespace { + __gnu_cxx::__mutex& + __get_locale_mutex() + { + static __gnu_cxx::__mutex locale_mutex; + return locale_mutex; + } + using namespace std; typedef char fake_locale_Impl[sizeof(locale::_Impl)] @@ -198,8 +205,6 @@ namespace __attribute__ ((aligned(__alignof__(std::__timepunct_cache<wchar_t>)))); fake_time_cache_w timepunct_cache_w; #endif - - __gnu_cxx::__mutex locale_mutex; } // anonymous namespace _GLIBCXX_BEGIN_NAMESPACE(std) @@ -207,7 +212,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) locale::locale() throw() : _M_impl(0) { _S_initialize(); - __gnu_cxx::__scoped_lock sentry(locale_mutex); + __gnu_cxx::__scoped_lock sentry(__get_locale_mutex()); _S_global->_M_add_reference(); _M_impl = _S_global; } @@ -218,7 +223,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _S_initialize(); _Impl* __old; { - __gnu_cxx::__scoped_lock sentry(locale_mutex); + __gnu_cxx::__scoped_lock sentry(__get_locale_mutex()); __old = _S_global; __other._M_impl->_M_add_reference(); _S_global = __other._M_impl; |