diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2015-09-02 10:51:14 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2015-09-02 11:51:14 +0100 |
commit | d8e19f3114a751fd78aaef68e763f24d286b0f8c (patch) | |
tree | cee85e202d87140912455fbae7d5acbf64c5a58e | |
parent | 1c743086d26a076509111ce079b9afe10c3d43d3 (diff) | |
download | gcc-d8e19f3114a751fd78aaef68e763f24d286b0f8c.zip gcc-d8e19f3114a751fd78aaef68e763f24d286b0f8c.tar.gz gcc-d8e19f3114a751fd78aaef68e763f24d286b0f8c.tar.bz2 |
re PR libstdc++/67408 (<mutex> assumes that __gthread_mutex_t and__gthread_recursive_mutex_t are the same types)
2015-09-02 Sebastian Huber <sebastian.huber@embedded-brains.de>
PR libstdc++/67408
* include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Use
_Derived::_M_timedlock().
(timed_mutex): Add _M_timedlock() and make base class a friend.
(recursive_timed_mutex): Likewise.
From-SVN: r227400
-rw-r--r-- | libstdc++-v3/ChangeLog | 8 | ||||
-rw-r--r-- | libstdc++-v3/include/std/mutex | 17 |
2 files changed, 23 insertions, 2 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 823939f..d9c9d49 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,11 @@ +2015-09-02 Sebastian Huber <sebastian.huber@embedded-brains.de> + + PR libstdc++/67408 + * include/std/mutex (__timed_mutex_impl::_M_try_lock_until): Use + _Derived::_M_timedlock(). + (timed_mutex): Add _M_timedlock() and make base class a friend. + (recursive_timed_mutex): Likewise. + 2015-08-28 Tim Shen <timshen@google.com> PR libstdc++/67362 diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex index deb85df..790508c 100644 --- a/libstdc++-v3/include/std/mutex +++ b/libstdc++-v3/include/std/mutex @@ -230,8 +230,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION static_cast<long>(__ns.count()) }; - auto __mutex = static_cast<_Derived*>(this)->native_handle(); - return !__gthread_mutex_timedlock(__mutex, &__ts); + return static_cast<_Derived*>(this)->_M_timedlock(__ts); } template<typename _Clock, typename _Duration> @@ -293,6 +292,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION native_handle_type native_handle() { return &_M_mutex; } + + private: + friend class __timed_mutex_impl<timed_mutex>; + + bool + _M_timedlock(const __gthread_time_t& __ts) + { return !__gthread_mutex_timedlock(&_M_mutex, &__ts); } }; /// recursive_timed_mutex @@ -346,6 +352,13 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION native_handle_type native_handle() { return &_M_mutex; } + + private: + friend class __timed_mutex_impl<recursive_timed_mutex>; + + bool + _M_timedlock(const __gthread_time_t& __ts) + { return !__gthread_recursive_mutex_timedlock(&_M_mutex, &__ts); } }; #endif #endif // _GLIBCXX_HAS_GTHREADS |