mutex (try_lock): Do not swallow exceptions.
* include/std/mutex (try_lock): Do not swallow exceptions. * testsuite/30_threads/try_lock/4.cc: Fix test. From-SVN: r215467
This commit is contained in:
parent
ed26fe9e4a
commit
726d31362a
@ -1,3 +1,8 @@
|
||||
2014-09-22 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* include/std/mutex (try_lock): Do not swallow exceptions.
|
||||
* testsuite/30_threads/try_lock/4.cc: Fix test.
|
||||
|
||||
2014-09-22 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
PR libstdc++/54316
|
||||
|
@ -630,12 +630,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
{
|
||||
int __idx;
|
||||
auto __locks = std::tie(__l1, __l2, __l3...);
|
||||
__try
|
||||
{ __try_lock_impl<0>::__do_try_lock(__locks, __idx); }
|
||||
__catch(const __cxxabiv1::__forced_unwind&)
|
||||
{ __throw_exception_again; }
|
||||
__catch(...)
|
||||
{ }
|
||||
__try_lock_impl<0>::__do_try_lock(__locks, __idx);
|
||||
return __idx;
|
||||
}
|
||||
|
||||
|
@ -133,8 +133,15 @@ void test03()
|
||||
while (unreliable_lock::throw_on < 3)
|
||||
{
|
||||
unreliable_lock::count = 0;
|
||||
int failed = std::try_lock(l1, l2, l3);
|
||||
VERIFY( failed == unreliable_lock::throw_on );
|
||||
try
|
||||
{
|
||||
std::try_lock(l1, l2, l3);
|
||||
VERIFY( false );
|
||||
}
|
||||
catch (int e)
|
||||
{
|
||||
VERIFY( e == unreliable_lock::throw_on );
|
||||
}
|
||||
++unreliable_lock::throw_on;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user