diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index c1ef36c5ba8b4c91ddd53578813f32ae22a0eee1..fa5059e25e8d888fb09bb0ea796f5cb5004aaa07 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2008-09-04 Chris Fairles <chris.fairles@gmail.com> + + * include/std/mutex (once_flag): Construct __gthread_once_t in a + temporary variable before assigning to _M_once to avoid initialization + errors. + 2008-09-03 Paolo Carlini <paolo.carlini@oracle.com> * config/abi/pre/gnu.ver: Also export __once_functor_lock; tighten diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex index 5e6ba9c271556ed59b32c36ad33dd2f81365d35d..e4ceaf2aac893a83b3f3b3bbaa88dc06590a0f17 100644 --- a/libstdc++-v3/include/std/mutex +++ b/libstdc++-v3/include/std/mutex @@ -615,8 +615,10 @@ namespace std typedef __gthread_once_t __native_type; once_flag() - : _M_once(__GTHREAD_ONCE_INIT) - { } + { + __gthread_once_t __tmp = __GTHREAD_ONCE_INIT; + _M_once = __tmp; + } once_flag(const once_flag&) = delete; once_flag& operator=(const once_flag&) = delete;