From 767310fa3887a6e564cc9eabfe865afe4cc869e6 Mon Sep 17 00:00:00 2001 From: robwiss Date: Fri, 22 May 2015 20:18:50 -0400 Subject: [PATCH 1/2] added locking to sequence_impl --- include/turtle/detail/sequence_impl.hpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/include/turtle/detail/sequence_impl.hpp b/include/turtle/detail/sequence_impl.hpp index 26ad742..bcb6d33 100644 --- a/include/turtle/detail/sequence_impl.hpp +++ b/include/turtle/detail/sequence_impl.hpp @@ -22,24 +22,30 @@ namespace detail class sequence_impl : private boost::noncopyable { public: + sequence_impl() : mutex_( boost::make_shared< mutex >() ) {} + void add( void* e ) { + lock _( mutex_ ); elements_.push_back( e ); } void remove( void* e ) { + lock _( mutex_ ); elements_.erase( std::remove( elements_.begin(), elements_.end(), e ), elements_.end() ); } bool is_valid( const void* e ) const { + lock _( mutex_ ); return std::find( elements_.begin(), elements_.end(), e ) != elements_.end(); } void invalidate( const void* e ) { + lock _( mutex_ ); elements_type::iterator it = std::find( elements_.begin(), elements_.end(), e ); if( it != elements_.end() ) @@ -50,6 +56,8 @@ namespace detail typedef std::vector< void* > elements_type; elements_type elements_; + + const boost::shared_ptr< mutex > mutex_; }; } } // mock From 3e79bae0b74ea7d4e3a4600edc91e300a08bda36 Mon Sep 17 00:00:00 2001 From: robwiss Date: Fri, 22 May 2015 20:46:53 -0400 Subject: [PATCH 2/2] fixes for build errors --- include/turtle/detail/sequence_impl.hpp | 1 + include/turtle/sequence.hpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/include/turtle/detail/sequence_impl.hpp b/include/turtle/detail/sequence_impl.hpp index bcb6d33..ac40080 100644 --- a/include/turtle/detail/sequence_impl.hpp +++ b/include/turtle/detail/sequence_impl.hpp @@ -10,6 +10,7 @@ #define MOCK_SEQUENCE_IMPL_HPP_INCLUDED #include "../config.hpp" +#include "mutex.hpp" #include #include #include diff --git a/include/turtle/sequence.hpp b/include/turtle/sequence.hpp index f3009ca..051d219 100644 --- a/include/turtle/sequence.hpp +++ b/include/turtle/sequence.hpp @@ -10,8 +10,8 @@ #define MOCK_SEQUENCE_HPP_INCLUDED #include "config.hpp" -#include "detail/sequence_impl.hpp" #include +#include "detail/sequence_impl.hpp" namespace mock {