mirror of git://gcc.gnu.org/git/gcc.git
mutex (call_once): Remove parentheses to fix error in c++1y and gnu++1y mode.
* 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. From-SVN: r199875
This commit is contained in:
parent
0d00888247
commit
bd24ec2de0
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue