mutex (try_lock): Do not swallow exceptions.
authorJonathan Wakely <jwakely@redhat.com>
Mon, 22 Sep 2014 14:54:35 +0000 (15:54 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Mon, 22 Sep 2014 14:54:35 +0000 (15:54 +0100)
* include/std/mutex (try_lock): Do not swallow exceptions.
* testsuite/30_threads/try_lock/4.cc: Fix test.

From-SVN: r215467

libstdc++-v3/ChangeLog
libstdc++-v3/include/std/mutex
libstdc++-v3/testsuite/30_threads/try_lock/4.cc

index 9cbbe19419b26af10d80ca2353879e7081c0b2ee..aeb8afcc5823fc7dcebbbb3b774d5ea3c4c7f687 100644 (file)
@@ -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
index f6b851c90b0844d97fbf7a0093e4222dec93a44e..d80fa5a4ecd89b341448aaa6f038f1c5e561bb3a 100644 (file)
@@ -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;
     }
 
index 774179826b24635e35e0f648973e29ade9e5d970..1212b6596e9e3034841108c8c42e65769b2f7b54 100644 (file)
@@ -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;
       }
     }