summaryrefslogtreecommitdiff
path: root/libstdc++-v3
diff options
context:
space:
mode:
authorredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2013-06-09 23:54:07 +0000
committerredi <redi@138bc75d-0d04-0410-961f-82ee72b054a4>2013-06-09 23:54:07 +0000
commit1e49613638a43713b2e1113ee89922fc6cc08858 (patch)
treecbebc0c0bb8317e87a6ab55453980b226a4e1c0c /libstdc++-v3
parentfe9c9e23e0abf057ead745de1412855c5addcdef (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--libstdc++-v3/include/std/mutex2
-rw-r--r--libstdc++-v3/testsuite/30_threads/mutex/try_lock/2.cc22
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();
}