diff --git a/include/boost/thread/win32/recursive_mutex.hpp b/include/boost/thread/win32/recursive_mutex.hpp index dea19dc1..5dff4be4 100644 --- a/include/boost/thread/win32/recursive_mutex.hpp +++ b/include/boost/thread/win32/recursive_mutex.hpp @@ -128,6 +128,10 @@ namespace boost void lock() { + if(locked()) + { + throw boost::lock_error(); + } m.lock(); is_locked=true; } @@ -138,6 +142,10 @@ namespace boost } void unlock() { + if(!locked()) + { + throw boost::lock_error(); + } m.unlock(); is_locked=false; } diff --git a/test/test_lock_concept.cpp b/test/test_lock_concept.cpp index 7b8415ee..0f2f0298 100644 --- a/test/test_lock_concept.cpp +++ b/test/test_lock_concept.cpp @@ -135,8 +135,10 @@ boost::unit_test_framework::test_suite* init_unit_test_suite(int, char*[]) add_tests_for_scoped_lock_concept(test); add_tests_for_scoped_lock_concept(test); add_tests_for_scoped_lock_concept(test); + add_tests_for_scoped_lock_concept(test); add_tests_for_scoped_try_lock_concept(test); + add_tests_for_scoped_try_lock_concept(test); return test; }