diff --git a/include/boost/thread/win32/mutex.hpp b/include/boost/thread/win32/mutex.hpp index eed19b34..28ae79f7 100644 --- a/include/boost/thread/win32/mutex.hpp +++ b/include/boost/thread/win32/mutex.hpp @@ -231,6 +231,10 @@ namespace boost void lock() { + if(locked()) + { + throw boost::lock_error(); + } m.lock(); is_locked=true; } @@ -247,6 +251,10 @@ namespace boost void unlock() { + if(!locked()) + { + throw boost::lock_error(); + } m.unlock(); is_locked=false; } diff --git a/include/boost/thread/win32/recursive_mutex.hpp b/include/boost/thread/win32/recursive_mutex.hpp index 5dff4be4..51bcc5f4 100644 --- a/include/boost/thread/win32/recursive_mutex.hpp +++ b/include/boost/thread/win32/recursive_mutex.hpp @@ -211,6 +211,10 @@ namespace boost void lock() { + if(locked()) + { + throw boost::lock_error(); + } m.lock(); is_locked=true; } @@ -227,6 +231,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 0f2f0298..c8803133 100644 --- a/test/test_lock_concept.cpp +++ b/test/test_lock_concept.cpp @@ -134,8 +134,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_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);