diff options
author | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-06-09 23:54:07 +0000 |
---|---|---|
committer | redi <redi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-06-09 23:54:07 +0000 |
commit | 1e49613638a43713b2e1113ee89922fc6cc08858 (patch) | |
tree | cbebc0c0bb8317e87a6ab55453980b226a4e1c0c /libstdc++-v3 | |
parent | fe9c9e23e0abf057ead745de1412855c5addcdef (diff) | |
download | gcc-1e49613638a43713b2e1113ee89922fc6cc08858.tar.gz |
* include/std/mutex (call_once): Remove parentheses to fix error in
c++1y and gnu++1y mode.
* testsuite/30_threads/mutex/try_lock/2.cc: Call try_lock() in new
thread to avoid undefined behaviour.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@199875 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3')
-rw-r--r-- | libstdc++-v3/ChangeLog | 7 | ||||
-rw-r--r-- | libstdc++-v3/include/std/mutex | 2 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/30_threads/mutex/try_lock/2.cc | 22 |
3 files changed, 21 insertions, 10 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 8ca5e1ac814..5934f9bbe0a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,10 @@ +2013-06-09 Jonathan Wakely <jwakely.gcc@gmail.com> + + * include/std/mutex (call_once): Remove parentheses to fix error in + c++1y and gnu++1y mode. + * testsuite/30_threads/mutex/try_lock/2.cc: Call try_lock() in new + thread to avoid undefined behaviour. + 2013-06-08 Ed Smith-Rowland <3dw4rd@verizon.net> Simplify and clean up library literals. diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex index 3c666c19e50..cdd05a37cbe 100644 --- a/libstdc++-v3/include/std/mutex +++ b/libstdc++-v3/include/std/mutex @@ -783,7 +783,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __set_once_functor_lock_ptr(&__functor_lock); #endif - int __e = __gthread_once(&(__once._M_once), &__once_proxy); + int __e = __gthread_once(&__once._M_once, &__once_proxy); #ifndef _GLIBCXX_HAVE_TLS if (__functor_lock) diff --git a/libstdc++-v3/testsuite/30_threads/mutex/try_lock/2.cc b/libstdc++-v3/testsuite/30_threads/mutex/try_lock/2.cc index bb3fcd412e4..f2a67231cda 100644 --- a/libstdc++-v3/testsuite/30_threads/mutex/try_lock/2.cc +++ b/libstdc++-v3/testsuite/30_threads/mutex/try_lock/2.cc @@ -24,6 +24,7 @@ #include <mutex> +#include <thread> #include <system_error> #include <testsuite_hooks.h> @@ -38,15 +39,18 @@ int main() m.lock(); bool b; - try - { - b = m.try_lock(); - VERIFY( !b ); - } - catch (const std::system_error& e) - { - VERIFY( false ); - } + std::thread t([&] { + try + { + b = m.try_lock(); + } + catch (const std::system_error& e) + { + VERIFY( false ); + } + }); + t.join(); + VERIFY( !b ); m.unlock(); } |